【发布时间】:2018-04-14 04:25:50
【问题描述】:
在 K&R 第 6 章中,声明如下:
struct{
int len;
char *str;
} *p;
我无法理解这个指针 p 指向哪个结构,以及这样的指针定义是否有效,因为在书中给出的所有其他示例以及我所看到的其他示例中,在定义指向结构的指针时,需要提及结构的名称,即所定义的类型。例如,
struct example{
int a;
...
}s1;
然后,
struct example *ptr = &s1;
所以,提到 ptr 指向的是一个类型结构示例,而不仅仅是结构。
另外,特别感兴趣的是:
*p->str 获取 str 指向的任何内容; *p->str++ str 在访问它指向的任何内容后递增(就像 *s++);
我一开始就无法理解 p 是什么,因此也不能理解增量和取消引用。
这是怎么回事?
提前致谢!
附:我是新来的,所以对问题格式的任何反馈也将不胜感激。
【问题讨论】:
-
在第一个例子中,结构是一个anonymous结构,
p是一个指向该匿名结构的指针。 -
它只是一个没有名字的结构,如图所示。它不经常使用,因为它的用途有限。
-
它是一个没有名字的结构类型,所以不能声明任何其他具有相同结构类型的变量。
-
@RaymondChen 显然这个问题并不是关于匿名结构,而是关于指针 type 而不仅仅是指向此类的指针。
标签: c pointers structure dereference anonymous-struct