Можно ли вернуть ссылку на статическую переменную области видимости функции? - PullRequest
4 голосов
/ 26 мая 2010

Я хотел бы знать, имеет ли это какие-либо побочные эффекты при любом обходе.

Например:

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 ]

2 голосов
/ 26 мая 2010

По существу без разницы, кроме области.

Следовательно, локальная переменная предпочтительнее, если этот указатель будет единственным способом доступа к переменной.

2 голосов
/ 26 мая 2010

Я не верю, что есть какая-то разница. Они обе являются глобальными переменными, просто имя первой видимо только внутри области действия функции func1.

...