函数 F 并不能 改变 pi 的值。 这是一个典型的错误,经常在笔试中出现。
C 在 调用 函数变量时 即使是指针变量 也是传值的 (只有传引用是直接传地址)。
当你调用函数传递(int * p)时,很显然传递的是指针的值,嗯,而这个值保存在F的栈帧中
接着,你修改了这个值,你修改的是栈帧中的值,而原函数中的指针的值,并没有改变,因为你传递的是 指针的值,函数中修改的是指针的值。
应该使用指针的指针。
或者 可以直接传引用 F(&p)。
本文通过一个C语言指针函数的例子,展示了如何误用地修改指针可能会导致程序逻辑错误。特别指出,在C语言中调用函数时,即使是传递指针变量也遵循传值而非传引用的规则,因此直接修改指针本身不会影响到外部变量。
函数 F 并不能 改变 pi 的值。 这是一个典型的错误,经常在笔试中出现。
C 在 调用 函数变量时 即使是指针变量 也是传值的 (只有传引用是直接传地址)。
当你调用函数传递(int * p)时,很显然传递的是指针的值,嗯,而这个值保存在F的栈帧中
接着,你修改了这个值,你修改的是栈帧中的值,而原函数中的指针的值,并没有改变,因为你传递的是 指针的值,函数中修改的是指针的值。
应该使用指针的指针。
或者 可以直接传引用 F(&p)。
978

被折叠的 条评论
为什么被折叠?