有个问题,希望大家给与比较科学的解释
int* p = null;
p = funA();
funB(p);int* funA()
{
....
int a[10];
....
return a;
}void funB(int* b)
{
....
}我要问的是,函数内部数组开空间是以int a[10]方式,这样把a返回,但是把p传入funB里,p指针指向空间无数据。解决此问题有三种方法:
(1)funB参数定义成int** b
(2)funA中用new方法分配空间
(3)p在外面分配好空间。
后两种方法能够理解,就是第一种指针的指针这种解决方法,原理是什么,请高手给解释解释,谢谢
int* p = null;
p = funA();
funB(p);int* funA()
{
....
int a[10];
....
return a;
}void funB(int* b)
{
....
}我要问的是,函数内部数组开空间是以int a[10]方式,这样把a返回,但是把p传入funB里,p指针指向空间无数据。解决此问题有三种方法:
(1)funB参数定义成int** b
(2)funA中用new方法分配空间
(3)p在外面分配好空间。
后两种方法能够理解,就是第一种指针的指针这种解决方法,原理是什么,请高手给解释解释,谢谢
使用**作为funB参数类型怎么就能取到值呢?
你的第一种方法调用funB的时候,给的实参是什么?是funB(&p)?
int* funA()
{
....
int a[10];
....
return a;
} 这根本是个垃圾函数,a这个数组在返回的时候早就被销毁了,变量的生存周期知识您都没搞清楚。用new则可以避免这一个问题,因为你设置了一个全局的变量。funB也很搓,直接搞个*b返回,这算那门子话,与上面的差不多情况。**这个是指向指针的指针,可以返回 指向*b的地址