靜態鏈表問題
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; ????} }
2016-07-18
按我的理解結構體指針傳遞的應該是結構體的首地址,你把p++后指向的是12個字節后的地址,并非下一個節點的首地址,而是下一個節點的指針地址,肯定無法讀出數據,你可以試試在創建結構體的時候將指針寫在第一個位置,等同于結構體首地址,應該可以。
2016-07-18
沒錯啊,全復制編譯后可正常運行!
2016-07-18
按我的理解結構體指針傳遞的應該是結構體的首地址,你把p++后指向的是12個字節后的地址,并非下一個節點的首地址,而是下一個節點的指針地址,肯定無法讀出數據,你可以試試在創建結構體的時候將指針寫在第一個位置,等同于結構體首地址,應該可以。