为什么当我们返回一个本地地址而不是本地变量时,会产生运行时错误?

问题描述 投票:0回答:1

举个例子

代码片段1:

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

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

代码片段2:这个函数不会产生运行时错误。

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

这将产生一个运行时错误--"正在返回本地变量的地址"。

c pointers
1个回答
3
投票
int func()
{
   int x=5; 
   return x; 
} 

函数返回一个int,即 价值 返回x的值。

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

函数返回 char*జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ 地址str1 正在被返回。局部变量的存储时间限制在它的范围内。一旦 func() 返回,该地址的 str1 此后无效。如果你取消引用那个返回的指针,你将会触发未定义的行为。

© www.soinside.com 2019 - 2024. All rights reserved.