1 指针数组
如果一个数组中所有元素保存的都是指针,我们称他为指针数组。
指针数组的定义形式:dataType *arrayName[lengt] 或者 dataType *(arrayName[lengt])
int a=1, b=34, c=100; int *arr[3]={&a, &b, &c}; //定义一个指针数组 int **parr=arr; //定义一个指向指针数组的指针
这时,下面两列操作是等价的。
取a、b、c的地址 | 取a、b、c的值 |
arr[i] | *arr[i] |
*(parr+i) | **(parr+i) |
2 二级指针
int a=100;
int *p1=&a; //定义指针p1指向a的地址
int **p2=&p1; //定义指针p2指向指针变量p1的地址
int ***p3=&p2; //三级指针
printf("a=%d
",a );
printf("*p1=%d, p1%d
", *p1, p1); //*p1=取a的值; p1=a的地址
printf("**p2=%d, *p2=%d, p2=%d",**p2, *p2, p2); //**p2=a的值; *p2=指针变量p1的值(即a的地址); p2=指针变量p1的地址
输出:
a=100
*p1=100, p1=6487676
**p2=100, *p2=6487676, p2=6487672