微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

返回的本地变量“ a”的地址是什么?

如何解决返回的本地变量“ a”的地址是什么?

  1. 我不知道以下代码有什么问题。
  2. 它告诉返回的局部变量的地址。
#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 举报,一经查实,本站将立刻删除。