c++ - 通过指针修改子函数中函数局部变量的内容

标签 c++

我有以下示例代码。只是想知道在全局指针中获取局部变量的地址然后在子函数中修改它的内容是否有效。以下程序正确修改了变量 a 的值。这种做法会导致任何问题吗?

#include <iostream>
#include <vector>

using namespace std;

vector<int*> va;

void func()
{
   int b ;
   b = 10;
   int * c = va[0];
   cout << "VALUE OF C=" << *c << endl;
   *c = 20;
   cout << "VALUE OF C=" << *c << endl;


}
int main()
{
     int a; 
     a = 1;
     va.push_back(&a);

     func();

     cout << "VALUE IS= " << a << endl;

     return 0;
}

最佳答案

这没关系,只要您不在 a 超出范围后尝试取消引用 va[0] 即可。你不知道,所以从技术上讲这段代码没问题。

也就是说,整个方法可能不是一个好主意,因为它使代码很难维护。

关于c++ - 通过指针修改子函数中函数局部变量的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13901535/

相关文章:

c++ - 如何创建 Gdk::Pixbuf 实例的 std::map 并在 Gdk::Cairo 中使用它

c++ - 在大内存映射文件中搜索

c++ - 'int accidents[5]' 的声明隐藏参数错误

c++ - 在qmake-files中查找错误源

c++ - QSqlite 在 Windows 和 Linux 上的不同行为

c++ - 使用 MYSQL 服务器 (mingw32-make) 为 QT 构建驱动程序时出错

c++ - 删除从 cout 输出到控制台的最后一行?

c++ - strincmp 的预期行为是什么?

c++ - 复制初始化和直接初始化之间有区别吗?

c++ - 为什么 "reference to array"在 C++ 中以如此困惑的方式定义?