2013-01-16 67 views
2

我知道靜態函數和C中正常函數之間的區別,我的問題是:在靜態函數中聲明的變量和C中的正常函數中聲明的變量之間是否有區別?靜態函數和正常函數中的變量

謝謝。

+0

你是說靜態函數和正常函數中的正常變量,還是靜態函數和正常函數中的靜態和正常變量?我在這裏有點困惑。 – Abhineet

+0

我的意思是在靜態和正常功能的正常變量。 – Jude

回答

1

不,static關鍵字僅適用於應用於函數時的可見性。

函數的關鍵字static告訴編譯器/鏈接器該函數不應該在文件外可見。當應用於函數時,C語言中的static等同於Java或C++等語言中的private

+1

*函數的'static'關鍵字告訴編譯器/鏈接器該函數不應該在類的外部可見*不,這是不正確的。 C++中的靜態函數與訪問規範無關。訪問說明符這樣做。 C中的'static'控制連接。它給函數一個*內部*鏈接(*默認鏈接是外部*)。內部連接限制了同一翻譯單元中的功能/變量的範圍,從而限制了功能/ –

+0

C從什麼時候開始上課?你的第二個陳述聲稱如此。你說的是不正確的。只是比較一個特徵並聲稱兩個單獨的語言結構是相同的就是不正確的。 –

3

在靜態函數中聲明的變量和在C中的正常函數中聲明的變量之間是否有區別?

答:沒有存在功能聲明沒有區別

1

變量無關他們的存儲類類型。在函數中定義的所有變量(靜態或非靜態)將在函數退出前定義其範圍。 而靜態或不靜態函數只會定義它對其他文件的可見性。

1

在靜態函數中使用的術語static使該函數僅適用於該特定的.c文件。這不會對該靜態函數中聲明的變量(auto,staticregister)做任何事情。

1

這兩個變量都是automatic,因此它們被分配在堆棧上。

+1

這個問題的最佳答案。 – Abhineet