#include <stdio.h>
#define R 10
#define C 20
int main()
{
int (*p)[R][C];
printf("%d", sizeof(*p));
getchar();
return 0;
}
o / p = 800
这里p是一个指向二维数组的指针..所以它的o / p应该是4还是8?
答案 0 :(得分:1)
这里的问题是你没有显示指针的大小,而是显示指针所指向的内存块的大小。
R = 10,C = 20。 int
在您的系统上有4个字节的大小。所以10 * 20 * 4 = 800。因此,使用您的代码,printf("%d", sizeof(*p));
将打印 800 。
如果您要查看指针变量的大小,则必须将代码更改为:
printf("%d", sizeof(p));