我有以下示例代码。只是想知道在全局指针中获取局部变量的地址然后在子函数中修改它的内容是否有效。以下程序正确修改了变量 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/