二维数组和数组指针

来源:互联网 发布:移动机顶盒软件下载 编辑:程序博客网 时间:2024/06/08 05:06
#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");


//&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;
}
0 0
原创粉丝点击