靜態函式 首先是一個函式 ,其次由於其實static 使其變為全域性函式 ,可以被該檔案內的任何函式呼叫,不能被其它檔案的函式呼叫
說的簡單點:
普通的函式都需要 先定義一個該類的變數,而後呼叫函式,而靜態函式可以直接呼叫
class a
fun1()必須用變數來呼叫 如: a a; a.fun1();
fun2()可以直接呼叫,如: a::fun2();
這樣可以避免生成一個變數,可以節省記憶體,方便呼叫….
當然了,有好處也有壞處:
靜態的成員函式不能訪問類中的非靜態成員
靜態函式(帶static的),外部檔案無法使用該函式了,同樣的是定義靜態變數後,外部檔案同樣不能使用;在工程中,通常各個模組分開完成,這時候如果確定自己定義的函式別的檔案不會使用,就可以加上static,以保證不會被誤用;只能在本檔案中使用,無法跨檔案。
靜態函式是函式的一種,函式包括靜態函式和非靜態函式兩種。
其中靜態函式是有static修飾的函式,如果沒有,則為非靜態函式(全域性函式)。
靜態函式(帶static的),只能在本檔案中使用,無法跨檔案。而非靜態函式(不帶static的),可以在任何一個檔案中使用。當在其它檔案中使用時,需要做函式宣告後再使用。
c語言裡面的靜態函式 和 函式有區別嗎
靜態函式是函式的一種,函式包括靜態函式和非靜態函式兩種。
其中靜態函式是有static修飾的函版數,如果沒權有,則為非靜態函式(全域性函式)。
當整個程式只有一個c檔案時,二者沒有區別。
當程式是由多個c檔案組成時,二者的作用域,即可使用的範圍不同。
其中,靜態函式(帶static的),只能在本檔案中使用,無法跨檔案。
而非靜態函式(不帶static的),可以在任何一個檔案中使用。當在其它檔案中使用時,需要做函式宣告後再使用。
那是你的工程只抄有一個c檔案的情況下是這樣,如果有多個c檔案,那麼如果在這個c檔案中fun函式沒有加static,那麼其他函式也可以用fun函式,如果加了,那麼其他c檔案不能用這個fun函式,加了static表示fun只能在這個c檔案中用
c語言中static函式的具體作用是什麼?
讓一個變數長期有效,而不管其是在什麼地方被申明。
避免多個檔案使用了相同的變數名而導致衝突。
c語言裡面的靜態函式和函式的區別是:
靜態函式是函式的一種,函式包括靜態函式和非靜態函式兩種。
靜態函式是有static修飾的函式,如果沒有,則為非靜態函式(全域性函式)。
當整個程式只有一個c檔案時,二者沒有區別,當程式是由多個c檔案組成時,二者的作用域,即可使用的範圍不同。
靜態函式(帶static的),只能在本檔案中使用,無法跨檔案,而非靜態函式(不帶static的),可以在任何一個檔案中使用。當在其它檔案中使用時,需要做函式宣告後再使用。
c語言中static的作用及c語言中使用靜態函式有何好處
在c語言中,static關鍵字有三種用途:
1 用於全域性變數定義時。
全域性變數定義時加上static修飾,表示該變數為靜態全域性變數。作用域為當前檔案。
2 用於函式定義或宣告。
任意函式的定義或宣告中包含了static修飾,表示該函式為靜態函式,只能在本檔案中被呼叫。
3 用於區域性變數定義。
區域性變數定義時,帶有static關鍵字,表示其為靜態區域性變數,只被初始化一次,之後每次呼叫函式時,該變數值為上次函式退出時的值。即,改變數的生存週期被擴充套件到整個程式執行時間段內。
靜態函式會被自動分配在一個一直使用的儲存區,直到退出應用程式例項,避免了呼叫函式時壓棧出棧,速度快很多。
關鍵字“static”,譯成中文就是“靜態的”,所以內部函式又稱靜態函式。但此處“static”的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案。 使用內部函式的好處是:
不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。
c語言中的靜態函式的作用是什麼?
靜態函式的例子:
//example 4
#include
static void fn();//宣告靜態函式void main()
void fn()//定義靜態函式
定義靜態函式的好處:
靜態函式不能被其它檔案所用;
其它檔案中可以定義相同名字的函式,不會發生衝突;
動態函式執行結束後,函式佔用的記憶體會被登出掉,數值不保留,靜態就可以保留數值
c語言中static說明是什麼意思?
static 用來說明靜態變數。
1、如果是在函式外面定義的,那麼其效果和全域性變數類似,即static說明的變數可以在當前c程式檔案中使用。
2、如果是在函式內部定義的,那麼這個變數只初始化一次,即使再次呼叫這個函式,這個static變數也不會再次被初始化,於是,這個變數的取值就會一直儲存著,我們再次呼叫該函式時,仍是儲存的上一次函式呼叫時儲存的結果。
是用來說明靜態變數,一旦被宣告就不在被初始化,你試下在外部定義,然後就在函式裡用,然後在另一個函式裡面用,這個變數就好像在共享的使用的感覺,呵呵,有同感吧?…
說明某個變數,或者函式是靜態的,是全域性不變的那種,
c語言中static 函式和普通函式的區別
static 函式和普通函式的區別如下:
在c語言中,static函式被限定只能在該函式所在的原始檔裡面的函式被呼叫,而不能被其他原始檔的函式所呼叫,也就是說該函式只能被限定在其所在的原始檔內被訪問,無法被外部呼叫。
c語言中static修飾的函式和普通函式的區別
靜態函式,編譯前就已經呼叫了,動態函式編譯時再呼叫
c語言中用static修飾後的函式只能在當前的.c檔案中使用,無法給外部呼叫。
就比如我們常加標頭檔案stdio.h,如果裡面的printf函式用了static修飾的話,我們就不能呼叫這個函式了
普通函式和static修飾的函式沒什麼區別,但是普通函式可以通過使用extern宣告為外部函式,這樣其他.c檔案通過新增.h標頭檔案就可以呼叫裡面的普通函式了