c - 将 sizeof() 与结构一起使用

标签 c pointers struct sizeof

考虑

struct abc
{
int a;
int b;
};

sizeof(struct abc)sizeof(struct abc*) 有什么区别?

最佳答案

在您的示例中,如果您打印两个 sizeof() 操作的结果,它们可能是相同的(这取决于您的系统),但这是巧合。如果更改结构的大小,您可以更清楚地看到差异。

#include <stdio.h>

struct abc
{
    int a;
    int b;
    int c;
};

int main(int argc, char *argv[])
{
    printf("sizeof(struct abc): %ld\n", sizeof(struct abc));
    printf("sizeof(struct abc *): %ld\n", sizeof(struct abc *));

    return 0;
}

这将打印(同样,取决于您的系统,但这是您将在 64 位 unix 上得到的):

sizeof(struct abc): 12
sizeof(struct abc *): 8

从中您可以猜出区别:第一个显示结构的大小,第二个显示指针的大小。

关于c - 将 sizeof() 与结构一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620435/

相关文章:

c - 为什么 A[2][3] 对于声明 int *A [10] 是有效的左值;

c - 调用 void 函数时出现段错误

c - 这是否会调用 C 中链接的未定义行为?

c++ - 使用 new 调整数组大小

c - 使用有效的 C 代码将 struct sockaddr * 转换为 struct sockaddr_in6 * 的正确方法是什么?

c - 在C中解析和发送数据帧

c - 我无法 typedef 指向已进行 typedef 编辑的结构的指针

c - C中的空间数据结构

C - 指针算术

c++ - 从 void* 到 void(*)(void*)[-fpermissive] 的无效转换