指针
一、指针*p是指针指向地址里面的值
二、指针p是指针指向的地址&a[]
三、指针是指向数组a[n]位置指针
四、“%p”是输出数组地址
五、指针:在定义时*是标识*p是指针,在运算时,*p表示取地址p中的内容
六、当int *p;p=&a;则:*p和*(&a)是一样的,都是访问本地址里面的内容,还可以写成:int *p=&a;
七、指针变量p是存放地址的变量
八、p=&arr[0];和p=arr;都是取数组的首地址,是一个意思
九、*p=arr;*p++:arr[0]+1,p[i]:arr[i],*arr:arr[0],*(arr+i):arr[i]
错误的有:*arr++
十、数组指针:(*p)[4]等价于有4列的二维数组arr[3][4],(*p)[4]=arr[][4];
十一、指针数组:int* p[4]:数组p[4]是一个指针,每个数组都可以指向一个整型变量
int *p[4]={&a,&b,&c,&d}
二级指针
1、二级指针:**p,存放的是*p的地址
2、int *p=&data;int *pp=&p;则,p指向&data的地址,pp指向&p的地址,*p保存data的值,*pp保存p的值(指针的值是地址),所以**pp = data,*pp=p=&data,pp=&p,传输中,&p的值到函数时,函数中定义int **pp,则p的值为*pp
3、二级定义:**p=&p(一级指针);***p=&p(二级指针)
函数与与指针
一、函数指针(跟普通变量一样,类型匹配)int a; int*p;
int getData(int a,int b){ }
int (*p)(int a,int,b);
用指针间接调用函数:p=getData;调用:(*p)(int a,int,b)
二、指针函数
int *a(int x,int y):返回一个实型指针,即地址