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的地址。

posted @ 2017-05-23 20:09  Dk_ddk  阅读(413)  评论(0编辑  收藏  举报