首页 > 解决方案 > 从 C++ 函数返回局部变量?

问题描述

在 C++ 中有很多方法可以从函数中返回局部变量,但为什么有些可行而有些不可行呢?就像,我提供了两个案例:

情况1:

int* fun1()
{
    int x = 20;
    int* ptr = &x;
    return ptr;
}

int main()
{
    int* arr = fun1();
    cout << *arr;
    return 0;
}

案例二:

int* fun2()
{
    int arr[100];
 
    arr[0] = 10;
    arr[1] = 20;
 
    return arr;
}
 
int main()
{
    int* ptr = fun2();
    cout << ptr[0] << " " << ptr[1];
    return 0;
}

这里ptr来自fun1(){case-1} 和arr[]来自fun2(){case-2} 的变量都是它们各自函数的局部变量。那么,为什么在 case-1 中main()打印返回值fun1()很好,在 case-2 中打印返回值时会出现分段错误?

此外,在这两种情况下,有什么更好的选择?

标签: c++return-valuelocal-variables

解决方案


推荐阅读