课程
/后端开发
/C
/Linux C语言结构体
我觉得循环中的p2->next应该等于p1->next 为什么会是p2->next=p1有哪位大神看懂了能帮我解释一下吗?
2016-08-15
源自:Linux C语言结构体 5-2
正在回答
p2->next的含义是“指针”,指针指向下一个对象的地址,所以p2->next指向下一个对象p1,这是正确的,对象里保存的属性才是代码需要用到的,而指针只不过指向下一个取属性的对象,仅仅是指路功能;
p2->next=p1->next,就变成指针指向指针,这样根据p2的指针取到的东西,并不是p1对象,而变成p1的下一个结点的指针,那就等于跳过了p1了,逻辑就不对了,所以p2的指针初衷就是要指向p1这个对象的。
果爱上了然 提问者
p2相当于是尾指针,始终指向链表最后一个结点,p2->next=p1就是把新创建的结点和链表的尾结点连接起来,而你说的p1->next此时是NULL,如果p2->next = p1->next,那么p2->next 就等于空了。
举报
C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来
2 回答为什么要让p1赋给p2?
1 回答p1=p2=(struct weapon*)malloc(sizeof(struct weapon));//可以把p2=去掉吗,p2=在这里有什么意义吗.
3 回答p2是一个只分配过一次内存的存储空间,每次都把p1往p2里写不会覆盖吗?
1 回答p1,p2本身不就是地址吗?为什么还要取它们的地址来scanf赋值?
4 回答这串代码是申请了两个'动态存储空间'分别给p1和p2,还是只是申请一了段'动态存储空间'将地址同时给了p1和p2