我正在研究K& R书中的C语言结构,并遇到了这个问题:
struct{
int len;
char *str
} *p;
我对此感到困惑,因为结构变量的名称应该是,它们给出了一个指针*p
。有人可以帮我吗?这个宣言意味着什么?
答案 0 :(得分:3)
此声明是指向结构的指针,该结构由2个字段组成 - int
和char*
。这个结构没有名称,如果你想声明同一结构的另一个指针,你将不得不再次编写它。
请注意,您可以这样写:
struct MyStruct {
int data1;
char data2;
};
这将定义一个新的结构类型,您可以在此后使用它来声明变量:struct MyStruct myVar;
。与你所写的不同之处在于,这个结构并没有声明一个新变量,而是一个新类型,因为我的例子中的结构有一个名字而你的结构没有。
另一种选择是使用typedef
并为此结构命名,然后您可以使用您提供的名称来声明该类型的更多变量。
您可以在http://en.wikipedia.org/wiki/Typedef的"简化声明"中阅读更多相关信息。部分。