課程
/后端開發(fā)
/C
/Linux C語言結(jié)構(gòu)體
我覺得循環(huán)中的p2->next應(yīng)該等于p1->next 為什么會是p2->next=p1有哪位大神看懂了能幫我解釋一下嗎?
2016-08-15
源自:Linux C語言結(jié)構(gòu)體 5-2
正在回答
p2->next的含義是“指針”,指針指向下一個對象的地址,所以p2->next指向下一個對象p1,這是正確的,對象里保存的屬性才是代碼需要用到的,而指針只不過指向下一個取屬性的對象,僅僅是指路功能;
p2->next=p1->next,就變成指針指向指針,這樣根據(jù)p2的指針取到的東西,并不是p1對象,而變成p1的下一個結(jié)點的指針,那就等于跳過了p1了,邏輯就不對了,所以p2的指針初衷就是要指向p1這個對象的。
果愛上了然 提問者
p2相當(dāng)于是尾指針,始終指向鏈表最后一個結(jié)點,p2->next=p1就是把新創(chuàng)建的結(jié)點和鏈表的尾結(jié)點連接起來,而你說的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是一個只分配過一次內(nèi)存的存儲空間,每次都把p1往p2里寫不會覆蓋嗎?
1 回答p1,p2本身不就是地址嗎?為什么還要取它們的地址來scanf賦值?
4 回答這串代碼是申請了兩個'動態(tài)存儲空間'分別給p1和p2,還是只是申請一了段'動態(tài)存儲空間'將地址同時給了p1和p2
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-08-16
p2->next的含義是“指針”,指針指向下一個對象的地址,所以p2->next指向下一個對象p1,這是正確的,對象里保存的屬性才是代碼需要用到的,而指針只不過指向下一個取屬性的對象,僅僅是指路功能;
p2->next=p1->next,就變成指針指向指針,這樣根據(jù)p2的指針取到的東西,并不是p1對象,而變成p1的下一個結(jié)點的指針,那就等于跳過了p1了,邏輯就不對了,所以p2的指針初衷就是要指向p1這個對象的。
2016-08-16
p2相當(dāng)于是尾指針,始終指向鏈表最后一個結(jié)點,p2->next=p1就是把新創(chuàng)建的結(jié)點和鏈表的尾結(jié)點連接起來,而你說的p1->next此時是NULL,如果p2->next = p1->next,那么p2->next 就等于空了。