我目前正在学习C语言中的struct
数据结构以及如何在其前面加上typedef
关键字。这将导致实际结构的变量名被放置在不同的命名空间中,如多个引用所解释的那样:
C++中"struct"和"typedef struct"之间的区别?
然而,对于我正在处理的示例,究竟发生了什么还不清楚:
#include <stdio.h>
struct demo
{
short low_pass_vcf;
short filter_coupler;
short reverb;
short sequential;
} synth;
int main()
{
printf("Size of struct: %i\n", sizeof(struct demo));
printf("Size of struct: %i\n", sizeof(synth));
return 0;
}
在这个例子中,我可以通过变量名“synth”访问“struct”数据结构;然而,在我看到的例子中,为了能够做到这一点,“struct”需要以“typedef”为前缀。在这个例子中,没有使用“typedef”,但我仍然能够通过“synth”引用这个结构。我想知道C语言是如何允许我这样做的?任何解释都将不胜感激。谢谢。
typedef
的作用吗? - ameyCUsizeof
返回一个size_t
类型的结果。size_t
值的正确格式字符串是%zu
,而不是%i
(适用于int
)。 - Keith Thompsonsize_t
信息。据我所知,typedef
所做的是在单独的命名空间中创建一个变量,使得可以在不需要使用struct demo
的情况下引用该结构体。不确定是否还有其他操作在幕后进行。 - Adam Bak