这串代码是申请了两个'动态存储空间'分别给p1和p2,还是只是申请一了段'动态存储空间'将地址同时给了p1和p2

来源:5-2 Linux C 动态数据结构-动态链表

122138763238273

2016-09-28 11:51

p2=p1=(struct weapon*)malloc(sizeof(struct weapon));

写回答 关注

4回答

  • xsxxsx
    2016-10-06 23:23:52
    已采纳

    同一块地址,p1=p2是为了让p2保存p1的内容,好可以给p1赋予新的内存地址,而保证上一块地址不会丢失

  • 慕后端9788028
    2016-10-05 16:43:08

    我的理解对于这串指令是:(struct weapon*)malloc(sizeof(struct weapon)),它是一个结构体指针  函数,我们都知道指针的本质是地址,同时malloc的作用是获取内存,做个比喻的话,房子的门牌号和大小都确定下来了。p1,p2是指针变量,他们都指向房子的地址。记得老师说,p1是指向当前开辟的节点的地址,p2是指向上一个开辟节点的地址,那么当最开始的时候就只有一个地址,那么p1,p2都只指向第一个地址。这是我对这段代码的理解,如果有误,请大家指正,xiexie

    qtw199...

    你的理解我很赞同!

    2017-12-05 22:17:55

    共 1 条回复 >

  • 我遇见你_你没遇见
    2016-10-02 18:40:08

    我同意后者,p1和p2同时保留了第一个申请的存储空间首地址。

  • 122138763238273
    2016-09-28 12:07:39

    为什么不是

    p1=(struct weapon*)malloc(sizeof(struct weapon));

    p2=的意义何在,它有什么用啊

Linux C语言结构体

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

118304 学习 · 162 问题

查看课程

相似问题