NewNew 发表于 2010-4-19 17:08:56

返回C语言的局部变量

马老师好,各位好!
   按照C语言的规范,在函数内部声明的局部变量在函数返回就销毁了,那么我返回的是函数的局部变量,这样可靠吗?谢谢!
   unsigned char Test_function(void)
   {
      unsigned char a;
      a=100;
      return a;
   }
这样是否可靠!有点模糊,请讲解!

aozima 发表于 2010-4-19 17:21:49

C语言通过特定的寄存器来传递返回值.
return a; 就是把a的值复制到那个特定的寄存器里面.

当然,事实上编译器都很聪明,直接把a分配到那个寄存器了,并不用复制这个动作.名曰:优化.

cat_li 发表于 2010-4-19 17:29:05

在你返回a的时候,函数还没有结束返回,所以变量也不会被销毁,可靠地
页: [1]
查看完整版本: 返回C语言的局部变量