#include<stdio.h>//程序1,c语言程序.c
int main(){
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
int i;
for(i=0;i<3;i++)
printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
printf("\n");
for(i=0;i<3;i++)
printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));
}
结果为:
二级指针:a,pa
一级指针:a[i],pa[i],p
我们说说*(*(a+i)+i), a为二级指针,(a+i)指向一级指针a[i]的地址,*(a+i)取a[i]地址,(*(a+i)+i)则表示指向a[i][i]的值,*(*(a+i)+i)为取值。
因此,可以得到:
a[i] = *(a+i)
*(*(a+i)+i) = a[i][i]
*a = a[0]