您可以告诉我下面代码中sizeof(x)
和sizeof(p_x)
之间的区别是什么?
int x[10], *p_x;
p_x = (int*)malloc(10 * sizeof(int));
答案 0 :(得分:9)
sizeof(x)
给出数组x
使用的字节数。
sizeof(p_x)
给出指针使用的字节数。
#include<stdio.h>
int main() {
int x[10], *p_x;
printf ("%lu %lu\n", (unsigned long)sizeof(x), (unsigned long)sizeof(p_x));
return 0;
}
节目输出:
40 4
我的MSVC使用32位指针和32位整数。
编辑改进了以下评论后的数字格式,谢谢。
答案 1 :(得分:4)
sizeof(x)
是数组对象的大小。其值为10 * sizeof (int)
。
sizeof(p_x)
是指针对象的大小。其值为sizeof (int *)
。
答案 2 :(得分:4)
sizeof(x)以字节(10 * sizeof(int),sizeof int为4个字节)返回数组的大小,而sizeof(p_x)返回指针的大小。如果你使用64位机器,那就是8字节,如果是32位机器,则是4字节。