函数 F 并不能 改变 pi 的值。 这是一个典型的错误,经常在笔试中出现。
C 在 调用 函数变量时 即使是指针变量 也是传值的 (只有传引用是直接传地址)。
当你调用函数传递(int * p)时,很显然传递的是指针的值,嗯,而这个值保存在F的栈帧中
接着,你修改了这个值,你修改的是栈帧中的值,而原函数中的指针的值,并没有改变,因为你传递的是 指针的值,函数中修改的是指针的值。
应该使用指针的指针。
或者 可以直接传引用 F(&p)。
函数 F 并不能 改变 pi 的值。 这是一个典型的错误,经常在笔试中出现。
C 在 调用 函数变量时 即使是指针变量 也是传值的 (只有传引用是直接传地址)。
当你调用函数传递(int * p)时,很显然传递的是指针的值,嗯,而这个值保存在F的栈帧中
接着,你修改了这个值,你修改的是栈帧中的值,而原函数中的指针的值,并没有改变,因为你传递的是 指针的值,函数中修改的是指针的值。
应该使用指针的指针。
或者 可以直接传引用 F(&p)。