已采納回答 / 稚氣磅礴
每個指針在你賦值給它之前,它都需要有一個確定的指向地址.如果你直接head = p1;因為head沒有確定的地址,運行時就會出現未知錯誤.好像這就是所謂的野指針.加了head = NULL;就是為了給head一個確定的指向;
2017-02-21
已采納回答 / 筑夢之隊
//倒序打印for(index=0; index<=length/2-1; index++) ? ? ? ?//二分 交換?{????temp = word[index];????word[index] = word[length-index-1];????word[length-index-1] = temp;}1、一個基本的錯誤為:沒有意識到數組的下標是位于[0,length),所以導致出現了后面兩個問題:2、二分交換的結束值的取值有問題。應該是length/2-1,而不是(length+ind...
2017-01-20
已采納回答 / 天之大
malloc返回的是開辟空間的首地址,他并不知道你放的是什么類型的東西,所以要用第一個括號中的內容強制轉換指針類型為struct weapon*,和p1的類型轉為一樣,否則會警告指針類型不符合sizeof運算符可以求類型所占空間大小比如sizeof(int),也可以求某個量的空間大小,比如struct weapon weapon1={......};可以用sizeof(weapon1)求他的大小,等于sizeof(struct weapon)
2016-12-26
已采納回答 / 慕粉13285976209
首先, p1和p2是指針, 他們都指向一個地址. 這里的scanf中取的是(p1->atk)這個整體的地址. "->"的優先級高于"&".
2016-12-02
已采納回答 / 純愛楓若情
p1是一個指針這沒問題,但是關鍵是“p1->price”代表的就是指針里面的price這個變量,就相當于其他語言里的“p1.price”這本身是一個變量,當然要在前面加上“&”尋址符。
2016-12-01
已采納回答 / leekunhwee
printf("%s\n,%d\n",weapon_1.name,++weapon_1.atk); 改為?printf("%s\n %d\n",weapon_1.name,++weapon_1.atk); 即可
2016-10-25