超级清晰 描述一级、二级指针的使用
一重指针-----变量
指向变量的地址;int a=10; int* p=&a;其中*p结果是10,p结果是地址。
一重指针-----数组
指向第几个数组;int a[4]={1,2,3,4}; int* p=a;其中*p结果是1,p结果是地址,
*(p+2)=p[2]=a[2]=3
。
二重指针-----指针数组
指向数组的指针; char*a[3]={“123”,“456”,“789”}; char**p=a; 其中p结果是地址,*p结果是“123”,**p结果是1;
二重指针-----多重数组
a[0][0]等同于*(*(p+0)+0)
;
a[i][j]等同于*(*(p+i)+j)
;
int a[4][5]={{1,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35},{41,42,43,44,45}};
int (*p)[5]=a;
其中p是地址;*p也是地址;
**p结果是1;即a[0][0];
**(p+2)
结果是31;即a[2][0];
*((*p)+1))
结果是12;即a[0][1];