亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

靜態鏈表問題

p = p->next 改為p = p++為什么運行結果不正確,p += sizeof(a) 這樣也不正確求解

#include?<stdio.h>

struct?weapon?{
????int?price;
????int?atk;
????struct?weapon?*?next;
};


int?main(){
????struct?weapon?a,b,c,*head,*p;
????a.price?=?100;
????a.atk?=?100;
????b.price?=?200;
????b.atk?=?200;
????c.price?=?300;
????c.atk?=?300;
????head?=?&a;
????a.next?=?&b;
????b.next?=?&c;
????c.next?=?NULL;
????p?=?head;
????while(p?!=?NULL){
????????printf("%d,%d\n",p->price,p->atk);
????????p?=?p->next;
????}
}


正在回答

3 回答

按我的理解結構體指針傳遞的應該是結構體的首地址,你把p++后指向的是12個字節后的地址,并非下一個節點的首地址,而是下一個節點的指針地址,肯定無法讀出數據,你可以試試在創建結構體的時候將指針寫在第一個位置,等同于結構體首地址,應該可以。

1 回復 有任何疑惑可以回復我~
#1

yunyulian 提問者

非常感謝!
2016-09-19 回復 有任何疑惑可以回復我~

沒錯啊,全復制編譯后可正常運行!

0 回復 有任何疑惑可以回復我~

按我的理解結構體指針傳遞的應該是結構體的首地址,你把p++后指向的是12個字節后的地址,并非下一個節點的首地址,而是下一個節點的指針地址,肯定無法讀出數據,你可以試試在創建結構體的時候將指針寫在第一個位置,等同于結構體首地址,應該可以。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Linux C語言結構體
  • 參與學習       118436    人
  • 解答問題       166    個

C語言的深入,幫助小伙伴們進一步的理解C語言,趕緊看過來

進入課程

靜態鏈表問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號