sizeof(x)和sizeof(p_x)

时间:2015-05-23 17:46:24

标签: c

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

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

3 个答案:

答案 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字节。