C++ 通过函数修改指针地址(指针的指针作为参数传递给函数)

修改指针地址:一般可直接将指针赋值为目标类的地址

void* pointtodefine=new MyClass();

通过函数修改指针指向的地址

有些场景需要通过函数修改指针pointtodefine,使其指向自定义的类MyClass。(例如,仅函数为留给用户的接口)

 

注意:对于函数参数是通过值传递的情况,如果函数参数为指针的话,将实参指针传递给函数形参,相当于拷贝了实参,在函数内部修改指针地址不会影响原来实参指针的地址。但是,如果在函数内部修改指针指向的值,则实参指针指向的值也随之更改。

 

总结:指针作为函数的参数,在函数中只能修改指针指向的值,无法实现修改实参指针的地址;指针的指针作为函数参数,在函数内部可以实现修改实参指针的地址。

方法:需要将指向该指针的指针作为参数传递给函数,再在函数中修改(即指针的指针作为参数传递给函数)。图示化过程如下:

具体代码如下:

//函数定义
void user(void ** ppanonymity){
    MyClass* target=new MyClass();
    *ppanonymity=target;
}

int main(){
    //调用方法
    void* pointtodefine=null;
    user(&pointtodefine);
    return 0;
}

它实现的作用还是

void* pointtodefine=new MyClass();

猜你喜欢

转载自blog.csdn.net/Cxiazaiyu/article/details/109137289