【发布时间】:2020-08-06 06:59:13
【问题描述】:
#include<stdio.h>
#include<conio.h>
int main()
{
int a[3][4] = {1, 2, 3, 4, 4, 3, 2, 1, 7, 8, 9, 0};
clrscr();
printf("%u \n",a);
printf("%u, %u\n", a+1, &a+1);
getch();
return 0;
}
输出: 65502 65510 65526
如果sizeof(int)=2 和基地址是65502,这个程序如何工作?
【问题讨论】:
-
因为
a+1表示将1sizeof *a添加到a,而&a+1表示将1sizeof a添加到&a。sizeof *a是sizeof (int[4]);sizeof a是sizeof (int[3][4]) -
打印带有
%u的指针是未定义的行为。 -
我认为这对您的帮助最大。读一读。 stackoverflow.com/a/4608421/10758654