问题描述
我试图找出 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
格式说明符。