# C語言題庫-038 static函數與普通函數有什麼區別? 【標準答案】static函數在內存中只有一份,普通函數在 每個被調用中維持一份拷貝 :::info 參考文章 全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量 。全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方 式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變 量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態 的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作 用域,即只在定義該變量的源文件內有效,在同一源程序的其它源文 件中不能使用它。由於靜態全局變量的作用域侷限於一個源文件內,只 能爲該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。 從以上分析可以看出,把局部變量改變爲靜態變量後是改變了它的存儲 方式即改變了它的生存期。把全局變量改變爲靜態變量後是改變了它的 作用域,限制了它的使用範圍。 static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使 用的函數應該說明爲內部函數(static),內部函數應該在當前源文件中 說明和定義。對於可在當前源文件以外使用的函數,應該在一個頭文件 中說明,要使用這些函數的源文件要包含這個頭文件。 :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up