为什么我不能在 C 中检查结构的大小? 未声明的错误

问题描述

我试图找出 validate(),其中 sizeof(p) 是下面定义的 p;但是,当我尝试运行以下代码时:

struct

我收到此错误

#include <stdio.h>

struct p
{
    char x;
    int y;
};

int main()
{
    printf("%d",sizeof(p));
    return 0;
}

我是 C 的初学者,我尝试将 main.c: In function ‘main’: main.c:19:25: error: ‘p’ undeclared (first use in this function) printf("%d",sizeof(p)); ^ 的定义移动到 p 函数中,更改 main 的定义,在线查找错误(没有具有相同错误的帖子回答了我的问题)等,但我似乎无法让它工作。任何建议表示赞赏。

解决方法

在 C 中(与在 C++ 中不同),struct p... 构造不定义新的变量类型。它仅将 p 定义为特定类型的 struct。因此,为了获得该结构的大小,或声明该类型的变量,您需要使用 struct p 来引用它。

像这样:

#include <stdio.h>

struct p {
    char x;
    int y;
};

int main()
{
    printf("%zu\n",sizeof(struct p));
    // Alternatively ...
    struct p q;
    printf("%zu\n",sizeof(q));
    return 0;
}

另外,请注意您应该对 %zu 类型使用 size_t 格式说明符。