现在的位置: 首页 > 综合 > 正文

[测试]关于一维数组和二维数组与指针的某些关系

2017年11月28日 ⁄ 综合 ⁄ 共 833字 ⁄ 字号 评论关闭
#include<stdio.h>
int main()
{
	int a[3][4]={11,12,13,14,15,16,17,18,19,110,111,112};
	int s[5]={111,222,333,444,555};
	printf("sizeof(a):%d\n",sizeof(a));
	printf("sizeof(a[0]):%d\n",sizeof(a[0]));
	printf("sizeof(a[0][0]):%d\n",sizeof(a[0][0]));
	printf("a=%p\n",a);
	printf("a+1=%p\n",a+1);
	printf("*a+1=%p\n",*a+1);
	printf("*a=%p\n",*a);
	printf("*(a+1)=%p\n",*(a+1));
	printf("*(a+1)+1=%p\n",*(a+1)+1);

	printf("\n\n");
	int *ptr1=(&a+1);
	printf("%d\n",*(ptr1-1));//112
	int *ptr2=(&a[1]+1);
	printf("%d\n",*(ptr2-1));//18
	printf("%d\n",*a[1]);//15 a[1]是指向第二行的首地址
	printf("%d\n",*(a+1));//=a[1] 输出的为15的地址
	printf("%d\n",**(a+1));//15

	printf("\n");
//	printf("%d\n",*s[1]);//报错
	printf("%d\n",*(s+1));//222
	return 0;
}

运行结果:

sizeof(a):48
sizeof(a[0]):16
sizeof(a[0][0]):4
a=0xbfc8e8f4
a+1=0xbfc8e904
*a+1=0xbfc8e8f8
*a=0xbfc8e8f4
*(a+1)=0xbfc8e904
*(a+1)+1=0xbfc8e908

112
18
15
-1077352188
15

222

抱歉!评论已关闭.