#include <stdio.h> int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { printf("%d:%d ",&a[i][j],a[i][j]); } printf("\n"); } printf("\n"); printf("%d %d %d\n",a,&a,*a);//0行首地址,数组a的起始地址,0行0列元素地址 printf("%d %d %d\n",a+0,a+1,a+2);//0行首地址,1行首地址,2行首地址 printf("%d %d %d\n",*a+0,*a+1,*a+2);//0行0列元素地址,0行1列元素地址,0行2列元素地址 printf("%d %d %d\n",*(*a+0),*(*a+1),*(*a+2));//0行0列元素值,0行1列元素值,0行2列元素值 printf("%d %d %d\n",*(a+0),*(a+1),*(a+2));//0行0列元素地址,1行0列元素地址,2行0列元素地址 printf("%d %d %d\n",*(*(a+0)),*(*(a+1)),*(*(a+2)));//0行0列元素值,1行0列元素值,2行0列元素值 printf("%d %d %d\n",*(a+0)+0,*(a+1)+1,*(a+2)+2);//0行0列元素地址,1行1列元素地址,2行2列元素地址 printf("%d %d %d\n",*(*(a+0)+0),*(*(a+1)+1),*(*(a+2)+2));//0行0列元素值,1行1列元素值,2行2列元素值 printf("%d %d %d\n",a[0],a[1],a[2]);//0行0列元素地址,1行0列元素地址,2行0列元素地址 printf("%d %d %d\n",&a[0],&a[1],&a[2]);//0行首地址,1行首地址,2行首地址 printf("%d %d %d\n",*a[0],*a[1],*a[2]);//0行0列元素值,1行0列元素值,2行0列元素值 printf("%d %d %d\n",a[0][0],&a[0][0],*a[0]+0);//0行0列元素值,0行0列元素地址,0行0列元素值 return 0; }
附上某次运行的结果:
如有理解错误的地方,欢迎指正。