#include <stdio.h>
#define R 10
#define C 20
int main()
{
int *p;
int *p1[R];
int *p2[R][C];
printf("%d %d %d", sizeof(*p),sizeof(*p1),sizeof(*p2));
getchar();
return 0;
}
为什么输出:4 8 160
?为什么p1
的大小变为8而不是4?
答案 0 :(得分:7)
考虑类型。
sizeof(*p)
==&gt; sizeof(int)
sizeof(*p1)
==&gt; sizeof(int *)
sizeof(*p2)
==&gt; sizeof((int [20]))
注意:根据您的平台和编译器,您将得到不同的结果。
另外,正如我们所知,sizeof
生成类型为size_t
的结果,建议使用%zu
格式说明符来打印结果。