C 带指针的结构声明

C 带指针的结构声明,c,pointers,struct,C,Pointers,Struct,我正在学习K&R书籍中的C结构,遇到了以下问题: struct{ int len; char *str } *p; 我对此感到困惑,因为struct变量的名称应该在哪里,他们给了一个指针*p。有人能帮我吗?这个声明是什么意思?这个声明是指向一个结构的指针,该结构由两个字段组成:一个int和一个char*。此结构没有名称,如果要声明同一结构的另一个指针,则必须再次写入 请注意,您可以这样写: struct MyStruct { int data1; char data2; };

我正在学习K&R书籍中的C结构,遇到了以下问题:

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

我对此感到困惑,因为struct变量的名称应该在哪里,他们给了一个指针
*p
。有人能帮我吗?这个声明是什么意思?

这个声明是指向一个结构的指针,该结构由两个字段组成:一个
int
和一个
char*
。此结构没有名称,如果要声明同一结构的另一个指针,则必须再次写入

请注意,您可以这样写:

struct MyStruct {
int data1;
char data2;
};
这将定义一个新的结构类型,稍后您可以使用它来声明一个变量:
struct MyStruct myVar。与您编写的不同之处在于,此结构没有声明新变量,而是声明新类型,因为我的示例中的结构有名称,而您的结构没有

另一个选项是使用
typedef
并为该结构指定一个名称,然后可以使用指定的名称来声明该类型的更多变量


您可以在“简化声明”部分了解更多信息。

如果下面的答案对您有所帮助,请按旁边的V键接受。非常感谢。