可以返回函数范围静态变量的引用吗?

时间:2010-05-26 09:40:11

标签: c embedded

我想知道在任何情况下是否会产生任何不良影响。

例如:

Ex1:
void* func1()
{
   void* p_ref = NULL;
   //function scope static variable
   static int var1 = 2;
   p_ref = &var1;
   return p_ref;
}
Ex2:

//file scope static variable
static int var2 = 2;

void* func2()
{
   void* p_ref = NULL;
   var2 = 3;
   p_ref = &var2;
   return p_ref;
}

因此,在上述两种情况下,除了var1是函数作用域而var2是文件作用域之外,有什么区别。

提前致谢。

2 个答案:

答案 0 :(得分:2)

我不相信有任何区别。它们都是全局变量,只是第一个的名称只在函数func1的范围内可见。

答案 1 :(得分:2)

除了范围之外基本上没有区别。

因此,如果指针是局部变量,则更可取 将成为访问变量的唯一方法。