为什么我不能检查 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
格式说明符。
我正在尝试找出 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
格式说明符。