++p->n指向第几个元素在这个定义中struct st{ int n; struct st *next }a[3]={5, &a[1],7,&a[ 2],9,NULL}, *p=a;
时间: 2024-05-26 13:17:21 浏览: 39
首先,这是一个定义了一个结构体类型为`st`的结构体。它有两个成员变量,一个是整型变量`n`,另一个是指向结构体类型`st`的指针`next`。
接下来,定义了一个数组`a`,其中包含3个结构体类型`st`的元素,每个元素都初始化了`n`和`next`成员变量。具体来说,第一个元素的`n`为5,`next`指向`a[1]`;第二个元素的`n`为7,`next`指向`a[2]`;第三个元素的`n`为9,`next`为NULL。
最后,定义了一个指向结构体类型`st`的指针`p`,并将其初始化为`a`。这样的话,`p`指向了数组`a`的第一个元素,即`{5, &a[1]}`。因此,`++p`会使`p`指向数组`a`的第二个元素,即`{7, &a[2]}`,而`++p->n`则会先将`p`指向的元素的`n`加1,变成8,然后返回它的地址,即指向`a[2]`的指针`next`。因此,`++p->n`等价于`*(++p)->next`,即获取`p`指向的元素的`next`成员变量所指向的元素。在这个例子中,它指向了数组`a`的第三个元素,即`{9, NULL}`。
阅读全文