一、明确几个符号
1、&取地址符,*取值符
1、char *a
别用cha* a=NULL,容易引起歧义
例如char* a , b;//其实是定义指针a,和char型变量b。
定义多个指针用:
char *a = NULL,*b = NULL;
2、定义指针时初始化
因为指针a到底指向哪里,我们不知道。随便改变这个地址的值,可能导致一些有用的数据被「莫名其妙地修改」。
char *buf = NULL;
char a[100]; //&a[0] 和 a一样,都是数组的第一个元素的地址
1、这是个宏观概念,“指向数组”并不是指针就是数组,你可以理解为将指针和数组联系起来。一般我们将指针指向数组第一个元素的地址,其实指向数组的任何一个变量的地址都是可以的。
char a[100]; char *p = NULL //方法一: p = a; //方法二: p = &a[0];
2、当指针指向数组元素的时候,可以对指针变量进行「加减」运算,+n表示指向p指针所指向的元素的「下n个元素」,-n表示指向p指针所指向的元素的「上n个元素」。并不是将地址加1。
3、其实使用指针法来访问数组的元素,不一定需要定义一个指向数组的单独的指针变量,因为数组名自身就是指向数组「第一个元素」的指针,因此指针法可以直接作用于数组名:
原文:https://www.cnblogs.com/chenjian688/p/12989166.html