c語言中的靜態函數調用
㈠ 關於c語言靜態變數的問題 函數increment每次調用時static int x=0都執行嗎
static變數只初始化一次,每次調用結束時會保留結果,下次調用時的初始值是上一次調用結束時的值。也就是說語句static int x=0;只會執行一次。
㈡ c語言中static的作用和用法
static關鍵字不僅可以用來修飾變數,還可以用來修飾函數。在使用 static 關鍵字修飾變數時,我們稱此變數為靜態變數。靜態變數的存儲方式與全局變數一樣,都是靜態存儲方式。靜態變數屬於靜態存儲方式,屬於靜態存儲方式的變數卻不一定就是靜態變數。
在C語言中,static關鍵字的作用如下:
在修飾變數的時,static修飾的靜態局部變數只執行一次,而且延長了局部變數的生命周期,直到程序運行結束以後才釋放。
static修飾全局變數的時,這個全局變數只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。
static修飾一個函數,則這個函數的只能在本文件中調用,不能被其他文件調用。Static修飾的局部變數存放在全局數據區的靜態變數區。
C++的static用法:
面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。
在類中,static可以用來修飾靜態數據成員和靜態成員方法。
靜態數據成員:
靜態數據成員可以實現多個對象之間的數據共享,它是類的所有對象的共享成員,它在內存中只佔一份空間,如果改變它的值,則各對象中這個數據成員的值都被改變。
靜態數據成員是在程序開始運行時被分配空間,到程序結束之後才釋放,只要類中指定了靜態數據成員,即使不定義對象,也會為靜態數據成員分配空間。
靜態數據成員既可以通過對象名引用,也可以通過類名引用。
靜態成員函數:
靜態成員函數和靜態數據成員一樣,他們都屬於類的靜態成員,而不是對象成員。
非靜態成員函數有this指針,而靜態成員函數沒有this指針。
靜態成員函數主要用來方位靜態數據成員而不能訪問非靜態成員。