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

(*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条)

报告相同问题?

问题事件

  • 已采纳回答 7月10日
  • 创建了问题 7月9日

悬赏问题

  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面