带有指针的结构声明

时间:2015-01-31 15:56:02

标签: c pointers struct

我正在研究K& R书中的C语言结构,并遇到了这个问题:

struct{
    int len;
    char *str
} *p;

我对此感到困惑,因为结构变量的名称应该是,它们给出了一个指针*p。有人可以帮我吗?这个宣言意味着什么?

1 个答案:

答案 0 :(得分:3)

此声明是指向结构的指针,该结构由2个字段组成 - intchar*。这个结构没有名称,如果你想声明同一结构的另一个指针,你将不得不再次编写它。

请注意,您可以这样写:

struct MyStruct {
int data1;
char data2;
};

这将定义一个新的结构类型,您可以在此后使用它来声明变量:struct MyStruct myVar;。与你所写的不同之处在于,这个结构并没有声明一个新变量,而是一个新类型,因为我的例子中的结构有一个名字而你的结构没有。

另一种选择是使用typedef并为此结构命名,然后您可以使用您提供的名称来声明该类型的更多变量。

您可以在http://en.wikipedia.org/wiki/Typedef的"简化声明"中阅读更多相关信息。部分。