进击的C语言——指针的定义
相信大家在刷国二C语言的时候对指针甚是不解
小编就带着大家了解一下指针
对指针有个相应的了解
大家心里肯定想问,指针是什么呢?
举个例子 大家可以定义一个int类型的指针变量p就可以写成
int *p;
接下来是取地址运算符,这个运算符是一个单目运算符(单目运算符意思就是我只需要输入一个值就可以得到一个运算结束值)。
举个例子 定义一个a=100的变量 接下来我要取这个a的地址放到*p_a里 那么就可以写成
int a = 100;
int *p_a = &a;
指针就是地址,地址就是指针,指针指向谁,指针就是谁的地址。
指针就是一个变量 类似于int a; 这样定义一个int变量一样 我们定义一个变量int *p;
a里存储的是整数形式变量 而p里存储的是一个地址的变量
int a = 100;
int *p_a = &a;
在这两个语句中指针p_a指向a,那么p_a所寄存的就是a的地址
1在指针声明的时候一定要赋值,如果不赋值则需要把指针赋值为NULL,这个是因为如果不对指针进行赋值,则系统就会对这个指针进行随机赋值,这个随机赋值有可能与系统指针相互重合引发死机等问题,所以一定要对指针声明的时候赋值,如果不赋值就要把指针指定为空指针,也就是赋值为NULL。
这个时候应该有小伙伴们发现了,前文语法中有一个错误
上文中在对指针p声明的时候没有进行赋值,这个大家一定要注意。
2在指针赋值时只能间接赋值不能直接赋值,只能间接赋值,这个是什么意思呢,就是说直接赋值就像是我定义个int a这个变量,我想对a进行赋值就可以直接赋值,a=100;这样我就把100赋值给a这个变量了,但是指针不能这样赋值,我想把0x ab53 6812这个地址赋值给*p,这个是不允许的,我们只能通过取地址运算符把a的地址取出来赋值给*p_a,就像文中语法:
int *p_a = &a;
文末所附代码是把a的地址输出出来的程序代码,大家可以理解一下。(%p是指针的输出格式)
#include<stdlib.h>
#include<stdio.h>
main()
{
int a = 100;
int *p_a = &a;
system("pause");
}
文字:刘家硕
审核:李红 刘家硕
标签: