c - 当我们返回本地地址而不是本地变量时,为什么会产生运行时错误?
问题描述
例如:
代码片段1:
int func()
{
int x=5;
return x;
}
此函数不会产生运行时错误。
代码片段2:
char* func()
{
char str1[]="HELLO";
return str1;
}
这将产生运行时错误-“正在返回局部变量的地址”。
解决方案
int func()
{
int x=5;
return x;
}
函数返回一个 int,正在返回 x的值。
char* func()
{
char str1[]="HELLO";
return str1;
}
函数返回char*
,正在返回的地址。str1
局部变量的存储持续时间仅限于其范围。一旦func()
返回,该地址在str1
以后无效。如果您取消引用返回的指针,您将触发未定义的行为。
推荐阅读
- python - 标注给定 ID、季度和数据集顺序的最后一行 Pandas
- gtk - wxWidgets 是否仍然比 GTK+ 更原生
- asterisk - Asterisk 15 服务器上的 IVR 呼叫模拟
- node.js - (Node.js) Sheets v4 API values#batchGet 函数忽略范围
- vba - VBA 宏 - 接收偏移对象定义的错误
- javascript - 当路径的一部分属于 $route.params 时,如何在 Vuetify 按钮中定义 Nuxt 链接?
- material-design - 如何调整 KivyMD 手风琴的大小
- symfony - Symfony access_control 规则
- python - Python - 如何获取 CSV 文件中所有列的数据类型?
- c# - 在 JArray C# 中忽略大小写