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
会被销毁