这也是面试时,常考的题
#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)