2016年8月22日 星期一

c++ pointer of address

當需要在method中allocate記憶體並給外部使用時就會需要用到pointer of address。因為address是在method中產生,因此需要傳入address的容器。



void myfun(double * A)
{
    A = new double[100];
    A[0] = 123;
}


void main()
{
double * A;
myFun(A);
}
一個像上面的程式,在main中的A[0]在呼叫myfun後依然無法取得,原因是因為傳入的double * A是個固定的指標,但在myfun中的A = new double[100];卻會對A*進行修改,因此需要修改傳入值為double * &A其他部分不需要修改
當然也可以用double ** A
但這樣需要修改成
void myfun(double ** A)
{
    *A = new double[100];
    *A[0] = 123;
}


void main()
{
double * A;
myFun(&A);
}


沒有留言:

張貼留言