c++ - 从 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# - 如何使用 QnA maker 实现我的 REST API?获取 OnMessageActivityAsync 错误
- ruby - 如何使用参数测试助手
- java - UML 图通常给出所有成员变量吗?
- excel - 在 Excel 中增加动态表的行时,如何自动复制列中的单元格注释?
- mysql - 来自多个表的多个表连接和最新时间戳
- python - Python `open` 用于 Windows 10 上的符号链接
- reporting-services - 将多个值参数插入表中
- excel - 获取具有值的单元格的位置
- ruby - 有没有办法用这个 display_table 方法中的项目对象替换属性?
- windows - electron-builder:卸载程序后如何删除深度链接协议?