为什么不同指针的大小不同
Why Size is different for different pointers
#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?
考虑类型。
sizeof(*p)
==> sizeof(int)
sizeof(*p1)
==> sizeof(int *)
sizeof(*p2)
==> sizeof((int [20]))
注意:根据您的平台和编译器,您会得到不同的结果。
此外,据我们所知,sizeof
会产生 size_t
类型的结果,建议使用 %zu
格式说明符来打印结果。
#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?
考虑类型。
sizeof(*p)
==>sizeof(int)
sizeof(*p1)
==>sizeof(int *)
sizeof(*p2)
==>sizeof((int [20]))
注意:根据您的平台和编译器,您会得到不同的结果。
此外,据我们所知,sizeof
会产生 size_t
类型的结果,建议使用 %zu
格式说明符来打印结果。