修改指针地址:一般可直接将指针赋值为目标类的地址
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();