748686
2021-07-09 12:17
采纳率: 50%
浏览 10

(*L1).data,L1->data和*L1区别?struct LNode *L1?

(L1).data,L1->data和L1区别?struct LNode *L1?
void list_headinsert(linklist &L1)
{
linklist s;
int x;
L1=(linklist)malloc(sizeof(LNode));
panduan1(L1);//判断头结是否分配内存了,把(*L1).next中的地址改为null。
printf("%d\n",L1->next);//改为null了
printf("%d\n",L1->data);//改为null了
scanf("%d",&x);
while(x!=999)
{
s=(linklist)malloc(sizeof(LNode));
s->data=x;
s->next=L1->next;
L1->next=s;
scanf("%d",&x);
}
printf("%d\n",L1->data);//改为null了
printf("%d\n",L1);//改为null了
printf("%d\n\n",L1->next);//改为null了
return;
}
int main()
{
linklist L1,L2;
list_headinsert(L1);
list_tailinsert(L2);
}
问题是: L1和L1->data的结果不一样,L1是解引用L1中存放的地址所对应的一块结构体空间的首地址,即(
L1).data的内容,和L1->data是一个意思,应该值也是一样的才对。但是我这边结果不一样,不知道为什么,是我理解错了嘛。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • programing菜鸟 2021-07-10 06:40
    已采纳

    前两个是一样的。实际上你的最后一个问题还是有点意思的。int* p = 1;这里星号p表示什么呢?意思是你可以拿到int的字节大小的数据,也就是4个字节的数据。那么再来看看星号Li,这会怎么办呢?答案就是拿到sizeof(LNodede)字节大小的数据,而Li->data只是看到sizeof(int)字节大小的数据而已。这自然不一样。

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题