如何解决返回的本地变量“ a”的地址是什么?
- 我不知道以下代码有什么问题。
- 它告诉返回的局部变量的地址。
#include <iostream>
using namespace std;
int *myfunc(int *ptrB);
int main() {
int *a,b;
cout << "give b :" << endl;
cin >> b;
a = myfunc(&b);
cout << "a is :" << *a << endl;
return 0;
}
int *myfunc(int *ptrB) {
int a;
a= (*ptrB) * (*ptrB);
*ptrB = a;
return &a;
}
解决方法
“我不知道怎么了。” -出问题的是,您返回的是函数返回后不再存在的局部变量的地址,因此该地址指向死对象并尝试使用它是UB。
,当您对函数返回的指针执行任何操作(如取消引用)(这是使用指针进行的典型操作)时,您需要知道指针所指向的对象存在。但是,您返回的指针指向存在于返回函数范围内的对象。函数返回后,函数作用域不再存在,对象随之下降。就像拿着已经被拆毁的房子的地址一样,希望您可以在那里过夜。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。