Я хотел знать, есть ли какие-либо побочные эффекты при любых обстоятельствах.Можно ли вернуть ссылку на переменную static?
Для экс:
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 является сфера файл.
Заранее спасибо.
Одно из отличий между вашими двумя функциями заключается в том, что func2 будет устанавливать значение глобальной переменной var2 до 3 при каждом вызове. В то время как func1 не изменит значение var1. – eemz
Я бы сказал, что они оба имеют статическую продолжительность хранения, что не означает, что они оба являются глобальными переменными. Глобалы объявляются вне функций. – Artur