首页 文章

如何在其他函数中更新 void **的值,并将其保存到另一个函数中?

提问于
浏览
-1

如果我有例如这样的代码:

#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;
}

上面的代码显示 11,但是我想更新 z 的值(其地址)以指向某个位置,因此我可以打印 5(我的意思是更新它)。我应该怎么做,当我将 z 发送到函数并返回 main 时,我可以收到 5 而不是 11。

我只是对指针不好。

编辑:我必须发送与void**交换参数

1 回答

  • 1

    您无法通过将void**的值(i.e.指向的值)传递给采用void**的函数来更新它。那只允许修改 pointed-to 内存,而不允许您传递给函数的指针指向哪个地址。

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

    无论您选择哪种解决方案,发布的代码都极易出错,并且难以维护。您应该完全避免它。

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

相关问题