指针参数在函数中new的问题
这也是面试时,常考的题
#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++ 指针 new delete
- 下一篇: new一个类的指针(不同括号的区别)