課程
/后端開發
/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
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-08-16
p2->next的含義是“指針”,指針指向下一個對象的地址,所以p2->next指向下一個對象p1,這是正確的,對象里保存的屬性才是代碼需要用到的,而指針只不過指向下一個取屬性的對象,僅僅是指路功能;
p2->next=p1->next,就變成指針指向指針,這樣根據p2的指針取到的東西,并不是p1對象,而變成p1的下一個結點的指針,那就等于跳過了p1了,邏輯就不對了,所以p2的指針初衷就是要指向p1這個對象的。
2016-08-16
p2相當于是尾指針,始終指向鏈表最后一個結點,p2->next=p1就是把新創建的結點和鏈表的尾結點連接起來,而你說的p1->next此時是NULL,如果p2->next = p1->next,那么p2->next 就等于空了。