我想知道在任何情況下是否有任何不良影響。可以返回函數作用域靜態變量的引用嗎?
對於前:
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 2010-05-26 10:34:04
我會說他們都有靜態存儲時間,這並不意味着他們都是全局變量。全局被聲明爲外部函數。 – Artur 2012-01-29 10:20:08