c编程过程中错误笔记-& 理解不深啊!
写了一个函数,删除数组里面的元素,声明如:
int student_delete(int *len, struct student stu[]);
在其内部调用了另一个函数
int student_del_by_number(int num, int *len, struct student stu[]);
我是这样调用的:
student_delete(&length, stu);在student_delete内部调用:student_del_by_number(num, &len, stu);
结果出错,函数没问题,在各个地方调试也没有结果,在student_delete(&length, stu);与student_del_by_number(num, &len, stu);中分别输出了len的值才发现,student_delete(&length, stu);中没错,而在student_del_by_number(num, &len, stu);中len是个没有见过的值,直觉告诉我参数错了,不知道细心的你看到没有,在student_del_by_number(num, &len, stu);中多用了一个&!!!!改成student_del_by_number(num, len, stu)成功。原因是len本来就是指针,对指针用取地址符,那传的参数就是这个指针的地址了,而不是我们希望的len的地址。