首页 > 解决方案 > 当我们返回本地地址而不是本地变量时,为什么会产生运行时错误?

问题描述

例如:

代码片段1:

int func()
{
   int x=5; 
   return x; 
}

此函数不会产生运行时错误。

代码片段2:

char* func()
{
  char str1[]="HELLO"; 
  return str1; 
} 

这将产生运行时错误-“正在返回局部变量的地址”。

标签: cpointers

解决方案


int func()
{
   int x=5; 
   return x; 
} 

函数返回一个 int,正在返回 x的值。

char* func()
{
  char str1[]="HELLO"; 
  return str1; 
} 

函数返回char*,正在返回的地址str1局部变量的存储持续时间仅限于其范围。一旦func()返回,该地址在str1以后无效。如果您取消引用返回的指针,您将触发未定义的行为。


推荐阅读