此代码获取从函数返回的值,创建并将其放入名为变量“b”的新地址空间中
int main()
{
int b;
b = topkek();
std::cout << &b;
};
int topkek()
{
int kek = 2;
return kek;
};
现在我明白了,因为变量 kek 在 topkek 方法中,我无法从 main() 方法访问它。使用 C++ 和指针,我想出了如何访问在方法内声明的变量,即使在方法终止后,看看这段代码。
int main()
{
int * a;
a = topkek(); //a is now pointing at kek
std::cout << *a; //outputs 2, the value of kek.
*a = 3;
std::cout << *a; //output 3, changed the value of kek.
std::cin >> *a;
};
int * topkek()
{
int kek = 2;
int* b = &kek; //intializing pointer b to point to kek's address in stack
return b; //returning pointer to kek
};
这种方法安全吗?编译器是否会阻止 kek 的地址空间稍后在代码中被覆盖,因为它仍然理解它正在被使用?