已采纳回答 / 稚气磅礴
每个指针在你赋值给它之前,它都需要有一个确定的指向地址.如果你直接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