gpt4 book ai didi

c - 通过指针访问另一个结构成员

转载 作者:太空狗 更新时间:2023-10-29 16:12:16 25 4
gpt4 key购买 nike

#include<stdio.h>

int main()
{
struct node
{
int data;
struct node *next;

};

struct node n1,n2,n3;
int i;
n1.data = 100;
n2.data = 200;
n3.data = 300;

n1.next = &n2;
n2.next = &n3;

i = n1.(*next).data;
printf("%i\n",i);

printf("%i\n", n2.next->data);

return 0;
}

我的问题很简单。当我使用此 i = n1.(*next).data; 时,为什么我无法通过 n1 节点访问 n2 节点我收到错误消息。但是,如果我将其更改为 i=n1.next->data

我认为 (*x).yx->y 是同一个意思。

最佳答案

你是对的,(*x).yx->y 意思是一样的,所以你应该写(*n1.next).data (相当于 n1.next->data,因为 n1.next 是您的 x)。

编辑:括号是由于评估顺序:

  1. 取n1:n1(一个结构节点)
  2. 取下一个成员:(n1).next(一个struct node *)
  3. 引用指针:*((n1).next)(结构节点)
  4. 获取成员数据:(*((n1).next)).data (an int)

阅读@Christophe 回答中 C11 标准的内容,并注意 . 运算符如何在上面的步骤 2 和 4 中与 struct node 作为第一个操作数一起使用(参见步骤 1 和 3)和成员名称作为秒操作数。

关于c - 通过指针访问另一个结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25837861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com