这也是面试时,常考的题
#include <stdio.h>
void foo(int *p)
{
p=new int;
*p=5;
}
int main(void)
{
int * p=NULL;
foo(p);
int result=*p;
printf("result=%d", result);
return 0;
}
上面程序编译通过,但运行程序时,将出现错误.
void fun(int *p)// 错在这里, 要改成 void fun(int *&p)
指针本身是放在栈上的,所以想要改变指针本身的话,要传入地址。
这样就可以传递出new的值了
三种方法可以解决上题错误.
void fun(int * &p)
void fun(int **p)
int * fun(void)
本文探讨了一段C/C++代码中关于指针使用的常见错误,并提出了三种解决方案。错误来源于尝试直接修改函数参数指向的地址,而未正确传递引用或指针。

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



