C++11 如何更新其他函数中void**的值,并将其保存到其他函数?

C++11 如何更新其他函数中void**的值,并将其保存到其他函数?,c++11,pointers,reference,C++11,Pointers,Reference,如果我有这样一个代码示例: #include <iostream> using namespace std; void swap(void** a) { int tmp = 5; void* b = &tmp; a = &b; } int main() { int x=11; void* y=&x; void** z=&y; swap(z); void* a = *z; cout <

如果我有这样一个代码示例:

#include <iostream>

using namespace std;
void swap(void** a) {
    int tmp = 5;
    void* b = &tmp;
    a = &b;
}

int main()
{
    int x=11;
   void* y=&x;
   void** z=&y;
   swap(z);
   void* a = *z;
   cout << *(int*)a << endl;

   return 0;
}
#包括
使用名称空间std;
无效掉期(无效**a){
int-tmp=5;
void*b=&tmp;
a=&b;
}
int main()
{
int x=11;
void*y=&x;
void**z=&y;
互换(z);
void*a=*z;

cout您不能通过将
void**
的值传递给接受
void**
的函数来更新该值(即它指向的对象)。该函数只允许修改指向的内存,而不允许修改传递给该函数的指针指向的地址

要更新它指向的内容,参数应该是
void**&
void***

无论您选择什么解决方案,您发布的代码都极易出错,维护起来非常困难。您应该完全避免它

另外,请注意,只要退出函数,
&tmp
就会无效,因为局部变量
tmp
会被销毁