當前位置:首頁 » 編程語言 » c語言static
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言static

發布時間: 2022-01-19 04:44:45

c語言中static說明是什麼意思

在C語言中,static關鍵字的作用如下:

1、在修飾變數的時,static修飾的靜態局部變數只執行一次,而且延長了局部變數的生命周期,直到程序運行結束以後才釋放。

2、static修飾全局變數的時,這個全局變數只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。

3、static修飾一個函數,則這個函數的只能在本文件中調用,不能被其他文件調用。Static修飾的局部變數存放在全局數據區的靜態變數區。

(1)c語言static擴展閱讀:

static關鍵字在C語言、C++、java中的作用有著相似之處,但也存在差異:

一、C++的static用法:

1、面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。

2、在類中,static可以用來修飾靜態數據成員和靜態成員方法

靜態數據成員

(1)靜態數據成員可以實現多個對象之間的數據共享,它是類的所有對象的共享成員,它在內存中只佔一份空間,如果改變它的值,則各對象中這個數據成員的值都被改變。

(2)靜態數據成員是在程序開始運行時被分配空間,到程序結束之後才釋放,只要類中指定了靜態數據成員,即使不定義對象,也會為靜態數據成員分配空間。

(3)靜態數據成員既可以通過對象名引用,也可以通過類名引用。

靜態成員函數

(1)靜態成員函數和靜態數據成員一樣,他們都屬於類的靜態成員,而不是對象成員。

(2)非靜態成員函數有this指針,而靜態成員函數沒有this指針。

(3)靜態成員函數主要用來方位靜態數據成員而不能訪問非靜態成員。

二、java的static用法:

1、聲明為static的變數稱為靜態變數或類變數。可以直接通過類名引用靜態變數,也可以通過實例名來引用靜態變數,但最好採用前者,因為後者容易混淆靜態變數和一般變數。

2、聲明為static的方法稱為靜態方法或類方法。靜態方法可以直接調用靜態方法,訪問靜態變數,但是不能直接訪問實例變數和實例方法。靜態方法中不能使用this關鍵字,因為靜態方法不屬於任何一個實例。

參考資料來源:網路-static(計算機高級語言)

⑵ 在C語言中static有什麼含義

最主要有兩點用途。
讓一個變數長期有效,而不管其是在什麼地方被申明。比如:
int fun1()
{
static int s_value = 0;
....
}
那麼fun1不管在什麼地方被調用,當函數退出後,s_value最後的值將一直會被系統保存(相當於一個全局變數),下次s_value再被用到時,也即當fun1()再次被調用時,s_value初始值將是最近被保存過的值(請注意s_value初始化操作只會被執行一次,即上述s_value =0 這個語句)。

2.避免多個文件使用了相同的變數名而導致沖突
比如有多個文件,分別由幾個人獨立開發的。假定他們在各自的文件中定義相同的「全局」變數名(僅僅指在他們獨自的文件中全局),當系統集成時,由於他們使用了名字一樣的「全局」變數,導致有難於遇見的問題。解決這個問題方便的做法就是在各自文件中,在相同的全局變數申明前加上static修飾符。這樣系統就會為他們分配不同的內存,互不影響了。

⑶ c語言中的static是什麼

static
用來說明靜態變數。

如果是在函數外面定義的,那麼其效果和全局變數類似,但是,static定義的變數只能在當前c程序文件中使用,在另一個c代碼裡面,即使使用extern關鍵詞也不能訪問這個static變數。

如果是在函數內部定義的,那麼這個變數只初始化一次,即使再次調用這個函數,這個static變數也不會再次被初始化,於是,這個變數的取值就會一直保存著,也就是說,當你再次調用這個函數的時候,裡面用到這個static變數時,就會發現,還是它還是上一次函數調用時的結果。

⑷ c語言中static 到底有啥作用啊

static是靜態聲明,用static聲明的變數生存期比普通變數長,因此f()函數多次運行靜態變數的值一直存在

⑸ C語言中static是做什麼用的

static 用來說明靜態變數。如果是在函數外面定義的,那麼其效果和全局變數類似,但是,static定義的變數只能在當前c程序文件中使用,在另一個c代碼裡面,即使使用extern關鍵詞也不能訪問這個static變數。如果是在函數內部定義的,那麼這個變數只初始化一次。

⑹ static在c語言中是什麼意思

static在c語言中是「靜態」的意思,用於在函數中聲明「靜態變數」用,在每一次調用後,該變數並不在函數返回時立即釋放,變數中保存的值,可以保留到下一次調用時繼續有效。

⑺ C語言static()函數

static是關鍵字,可以用來修飾任何函數,表示這個函數只能在當前文件使用,不能被項目中其它c文件調用

⑻ c語言中static關鍵字有哪些

C++面向過程的static和C的是一樣的。 C++的static有兩種用法:面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。
一、面向過程設計中的static
1、靜態全局變數
在全局變數前,加上關鍵字static,該變數就被定義成為一個靜態全局變數。我們先舉一個靜態全局變數的例子,如下:
//Example 1
#include <iostream.h>
void fn();
static int n; //定義靜態全局變數
void main()
{ n=20;
cout<<n<<endl;
fn();
}
void fn()
{ n++;
cout<<n<<endl;
}
靜態全局變數有以下特點:
該變數在全局數據區分配內存;
未經初始化的靜態全局變數會被程序自動初始化為0(自動變數的值是隨機的,除非它被顯式初始化);
靜態全局變數在聲明它的整個文件都是可見的,而在文件之外是不可見的;
靜態變數都在全局數據區分配內存,包括後面將要提到的靜態局部變數。對於一個完整的程序,在內存中的分布情況如下圖:
代碼區
全局數據區
堆區
棧區
一般程序的由new產生的動態數據存放在堆區,函數內部的自動變數存放在棧區。自動變數一般會隨著函數的退出而釋放空間,靜態數據(即使是函數內部的靜 態局部變數)也存放在全局數據區。全局數據區的數據並不會因為函數的退出而釋放空間。細心的讀者可能會發現,Example 1中的代碼中將
static int n; //定義靜態全局變數
改為
int n; //定義全局變數
程序照樣正常運行。
的確,定義全局變數就可以實現變數在文件中的共享,但定義靜態全局變數還有以下好處:
靜態全局變數不能被其它文件所用;
其它文件中可以定義相同名字的變數,不會發生沖突;
您可以將上述示例代碼改為如下:
//Example 2//File1
#include <iostream.h>
void fn();
static int n; //定義靜態全局變數
void main()
{ n=20;
cout<<n<<endl;
fn();
}
//File2
#include <iostream.h>
extern int n;
void fn()
{ n++;
cout<<n<<endl;
}
編譯並運行Example 2,您就會發現上述代碼可以分別通過編譯,但運行時出現錯誤。 試著將
static int n; //定義靜態全局變數
改為
int n; //定義全局變數
再次編譯運行程序,細心體會全局變數和靜態全局變數的區別。
2、靜態局部變數
在局部變數前,加上關鍵字static,該變數就被定義成為一個靜態局部變數。
我們先舉一個靜態局部變數的例子,如下:
//Example 3
#include <iostream.h>
void fn();
void main()
{ fn();
fn();
fn();
}
void fn()
{ static int n=10;
cout<<n<<endl;
n++;
}
通常,在函數體內定義了一個變數,每當程序運行到該語句時都會給該局部變數分配棧內存。但隨著程序退出函數體,系統就會收回棧內存,局部變數也相應失效。
但有時候我們需要在兩次調用之間對變數的值進行保存。通常的想法是定義一個全局變數來實現。但這樣一來,變數已經不再屬於函數本身了,不再僅受函數的控制,給程序的維護帶來不便。
靜態局部變數正好可以解決這個問題。靜態局部變數保存在全局數據區,而不是保存在棧中,每次的值保持到下一次調用,直到下次賦新值。
靜態局部變數有以下特點:
該變數在全局數據區分配內存;
靜態局部變數在程序執行到該對象的聲明處時被首次初始化,即以後的函數調用不再進行初始化;
靜態局部變數一般在聲明處初始化,如果沒有顯式初始化,會被程序自動初始化為0;
它始終駐留在全局數據區,直到程序運行結束。但其作用域為局部作用域,當定義它的函數或語句塊結束時,其作用域隨之結束;
3、靜態函數
在函數的返回類型前加上static關鍵字,函數即被定義為靜態函數。靜態函數與普通函數不同,它只能在聲明它的文件當中可見,不能被其它文件使用。
靜態函數的例子:
//Example 4
#include <iostream.h>
static void fn();//聲明靜態函數
void main()
{
fn();
}
void fn()//定義靜態函數
{ int n=10;
cout<<n<<endl;
}
定義靜態函數的好處:
靜態函數不能被其它文件所用;
其它文件中可以定義相同名字的函數,不會發生沖突;

⑼ c語言static

您好,你的問題,我之前好像也遇到過,以下是我原來的解決思路和方法,希望能幫助到你,若有錯誤,還望見諒!展開全部
static 用來說明靜態變數。
1、如果是在函數外面定義的,那麼其效果和全局變數類似,即static說明的變數可以在當前c程序文件中使用。
2、如果是在函數內部定義的,那麼這個變數只初始化一次,即使再次調用這個函數,這個static變數也不會再次被初始化,於是,這個變數的取值就會一直保存著,我們再次調用該函數時,仍是保存的上一次函數調用時保存的結果。
(9)c語言static擴展閱讀:
c語言中的static有三個主要作用:
1、隱藏性。當我們同時編譯多個文件時,所有未加static前綴的全局變數和函數都具有全局可見性。
2、static可以保持變數內容的持久,當static定義變數在函數內部時,改變數值的生命周期和全局變數相同。非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!

⑽ c語言static用法

static是靜態變數,程序運行時,它的值不會被重新初始化,對於這題來說,沒必要把k設成靜態的,一般的變數也能計算出來,因為中間沒有重新初始化的操作