定义指针变量
类型名*指针变量名
char *pa;//定义一个指向字符型的指针变量
int *pb;//定义一个指向整型的指针变量
取地址运算符和取值运算符
如果需要获取某个变量的地址,可以使用去地址运算符(&):
char *pa = &a;
int *pb = &f;
如果需要访问指针变量指向的数据,可以使用取值运算符(*):
printf("%c,%d\n",*pa, *pb);
指针和数组
数组名其实是数组第一个元素的地址!
用指针指向数组
char *p;
p = a;//语句1
p=&a[0];//语句2
指针的运算
当指针指向数组元素的时候,我们可以对指针变量进行加减运算,这样做的意义相当于指向距离指针所在位置向前或向后的第n个元素。
对比标准的下标法访问数组元素,这种使用指针进行间接访问的方法叫做指针法。
需要郑重强调的是:p+1并不是简单的将地址加1,而是指向数组的下一个元素。
指针和数组的区别
结论:数组名只是一个地址,而指针是一个左值。
指针数组和数组指针
int *p1[5]; 指针数组
指针数组是一个数组,每个数组元素存放一个指针变量
int (*p2)[5]; 数组指针.
数组指针是一个指针,它指向的是一个数组
void指针和NULL指针
void指针
void指针我们把它称之为通用指针,就是可以指向任何类型的数据。也就是说,任何类型的指针都可以赋值给void指针。
NULL指针
当你还不清楚要将指针初始化为什么地址时,请将它初始化NULL;在对指针进行解引用时,先检查该指针是否为NULL。这种策略可以为你今后编写大型程序节省大量的调试时间。