gpt4 book ai didi

C++,访问在其他方法中声明的非全局变量

转载 作者:太空狗 更新时间:2023-10-29 23:22:49 25 4
gpt4 key购买 nike

<分区>

此代码获取函数返回的值,创建并将其放入名为变量“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 的地址空间在稍后的代码中被覆盖,因为它仍然理解它正在被使用吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com