c - 如何使用 sizeof 运算符计算出使用多少字节来存储 C 中的变量?

标签 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 个字节就是答案?

最佳答案

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

sizeof(int)
sizeof(int *)

您会毫无疑惑地获得所需的答案。

关于c - 如何使用 sizeof 运算符计算出使用多少字节来存储 C 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610813/

相关文章:

java - 为什么在 java 中允许从 long 到 byte 进行窄转换

在c中复制文件夹

C: 为什么释放 int** 数组没有完成?

c - 使用 write() 系统调用输出 char 数组缓冲区的十进制/十六进制值

java - 在java中将字符存储为单个字节

C# UTF8 解码,返回字节/数字而不是字符串

c - 为什么要添加填充,如果 char 在 int 之后?

c - 相同结构的不同尺寸,不同类型的排序

c++ - sizeof(*this) 和结构继承

c - strcmp 参数类型错误