sizeof(x)和sizeof(p_x)之间有什么区别

你能告诉我下面代码中sizeof(x)sizeof(p_x)之间的区别是什么?

 int x[10], *p_x; p_x = (int*)malloc(10 * sizeof(int)); 

 sizeof(x) 

给出数组x使用的字节数。

 sizeof(p_x) 

给出指针使用的字节数。

 #include 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位整数。

编辑改进了下面评论后的数字格式,谢谢。

 sizeof(x) 

是数组对象的大小。 它的值是10 * sizeof (int)

 sizeof(p_x) 

是指针对象的大小。 它的值是sizeof (int *)

sizeof(x)以字节(10 * sizeof(int),sizeof int为4个字节)返回数组的大小,而sizeof(p_x)返回指针的大小。 如果你使用64位机器,那就是8字节,如果是32位机器,则是4字节。