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

Why can't I check the sizeof a struct in C? (undeclared error)

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

#include <stdio.h>

struct p
{
    char x;
    int y;
};

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

我收到此错误:

main.c: In function ‘main’:
main.c:19:25: error: ‘p’ undeclared (first use in this function)
     printf("%d", sizeof(p));
                         ^

我是C初学者,我试图将p的定义移动到main函数中,更改p的定义,在线查找错误(none 的具有相同错误的帖子回答了我的问题),等等,但我似乎无法让它工作。任何建议表示赞赏。

在 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;
}

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