#include <stdio.h>
int main(void)
{
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//a为二维指针
int (*p1)[4] = a;//数组指针,指向有四个元素的数组,即为一行
//&a[0][0]的表示方法,虽然值一样,但是意义却不一样
printf("%p %p\n",&a[0][0],&a[0][0]+1);//相差一个元素
printf("%p %p\n",a[0],a[0]+1);//相差了一个元素
printf("%p %p\n",*p1,*p1+1);//相差了一个元素
printf("%p %p\n",a,a+1);//相差了四个元素
printf("%p %p\n",&a[0],&a[0]+1);//相差了四个元素
printf("%p %p\n",&a,&a+1);//相差了12个元素
printf("\n\n");
//&a[1][0]表示方法
printf("%p\n",&a[1][0]);
printf("%p\n",a+1);
printf("%p\n",a[1]);
printf("%p\n",*(p1+1));
//&a[2][0]表示方法
printf("%p\n",&a[2][0]);
printf("%p\n",a+2);
printf("%p\n",a[2]);
printf("%p\n",*(p1+2));
printf("\n\n");
printf("%p\n",&a[0][0]+4*1+2);
printf("%p\n",a[1]+2);
printf("%p\n",*(p1+1)+2);
printf("\n\n");
//a[2][3]表示方法
printf("%d\n",a[2][3]);
printf("%d\n",*(*(p1+2)+3));
printf("%d\n",*(a[2]+3));
return 0;
}
int main(void)
{
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//a为二维指针
int (*p1)[4] = a;//数组指针,指向有四个元素的数组,即为一行
//&a[0][0]的表示方法,虽然值一样,但是意义却不一样
printf("%p %p\n",&a[0][0],&a[0][0]+1);//相差一个元素
printf("%p %p\n",a[0],a[0]+1);//相差了一个元素
printf("%p %p\n",*p1,*p1+1);//相差了一个元素
printf("%p %p\n",a,a+1);//相差了四个元素
printf("%p %p\n",&a[0],&a[0]+1);//相差了四个元素
printf("%p %p\n",&a,&a+1);//相差了12个元素
printf("\n\n");
//&a[1][0]表示方法
printf("%p\n",&a[1][0]);
printf("%p\n",a+1);
printf("%p\n",a[1]);
printf("%p\n",*(p1+1));
//&a[2][0]表示方法
printf("%p\n",&a[2][0]);
printf("%p\n",a+2);
printf("%p\n",a[2]);
printf("%p\n",*(p1+2));
printf("\n\n");
//&a[1][2]表示方法
printf("%p\n",&a[1][2]);printf("%p\n",&a[0][0]+4*1+2);
printf("%p\n",a[1]+2);
printf("%p\n",*(p1+1)+2);
printf("\n\n");
//a[2][3]表示方法
printf("%d\n",a[2][3]);
printf("%d\n",*(*(p1+2)+3));
printf("%d\n",*(a[2]+3));
return 0;
}