如何计算使用sizeof运算符在C中存储变量的字节数?

时间:2012-03-07 23:34:58

标签: c byte sizeof

我们有以下代码:

#include <stdio.h>
#define LEN 10

int main(void) {
    int i;
    int array[LEN];
    int *p;
    for (i = 0; i < LEN; i++) {
        array[i] = i;
    }
    for (p = &array[0]; p < &array[LEN]; p++) {
        printf("Address: %p   ", p);
        printf("Value: %d\n", *p);
    }
    return 0; 
}

它要求我们找出服务器用于存储整数变量的字节数,并将其打印在换行符上,它为我们提供了使用sizeof的提示。

现在,我有点像指针的菜鸟,所以这可能是一个非常快速的问题,但我应该打印:

printf("Size of int: %d", sizeof(p));

sizeof(*p)

一个打印4,另一个打印8.我倾向于8(它来自简单的p)因为它指的是内存位置,而不是指向它的值的变量,对吧?而8意味着8位,那么1个字节就是答案吗?

2 个答案:

答案 0 :(得分:3)

p是指向int的指针,因此sizeof(p)给出指针消耗的字节数。所以你得到的int(你的问题)的大小

sizeof(*p)

答案 1 :(得分:3)

针对您的特定问题的简单解决方案是在类型名称上使用sizeof

sizeof(int)
sizeof(int *)

您将获得所需的答案而不会产生任何混淆。