C語言中static和extern的區別
導語:由於變量的聲明可以有多次,但定義只能有一次,這就不可避免地要使用extern,static關鍵字。弄清楚這幾個關鍵字之間的用法和區別,能節省很多調試項目的時間,尤其是對於一些難以定位的鏈接錯誤。下面是C語言中static和extern的區別,一起來學習下吧:
static:
一、在C中,static主要定義全局靜態變量、定義局部靜態變量、定義靜態函數。
1、定義全局靜態變量:在全局變量前面加上關鍵字static,該全局變量變成了全局靜態變量。全局靜態變量有以下特點。
a.在全局區分配內存。
b.如果沒有初始化,其默認值為0.
c.該變量在本文件內從定義開始到文件結束可見。
2、定義局部靜態變量:在局部變量前面加上關鍵字static,其特點如下:
a.該變量在全局數據區分配內存。
b.它始終駐留在全局數據區,直到程序運行結束。
c. 其作用域為局部作用域,當定義它的函數或語句塊結束時,其作用域隨之結束。
3、定義靜態函數:在函數返回類型前加上static關鍵字,函數即被定義為靜態函數,其特點如下:
a.靜態函數只能在本源文件中使用
b.在文件作用域中聲明的inline函數默認為static類型
二、在C++中新增了兩種作用:定義靜態數據成員或靜態函數成員。
定義靜態數據成員。
a.內存分配:靜態數據成員在程序的`全局數據去分配。
b.初始化和定義:靜態數據成員定義時要分配空間,所以不能在類聲明中定義。
靜態數據成員因為程序以開始運行就必須存在,所以其初始化的最佳位置在類的內部,public、protected、private關鍵字對它的限定和普通數據成員一樣,因為其空間在全局數據分配,屬於所有本類的對象共享。它不屬於特定的類對象,在沒產生類對象時,其作用域可見,即沒有產生類的實例時,就可以操作它了。
靜態成員函數。靜態成員函數與類相聯繫,不與類的對象相聯繫。靜態成員函數不能訪問非靜態數據成員。
extern:
extern可以置於變量或函數前,以在別的文件中標識變量或函數的定義,並提示編譯器遇到此變量或函數時在其他模塊中尋找其定義。extern是C、C++語言中表明函數和全局變量作用範圍(可見性)的關鍵字。
對於extern變量來説,僅僅是一個變量的聲明,其並不是定義,不會分配內存空間。
extern表示將變量或函數聲明為外部鏈接,變量默認是內部鏈接,函數默認是外部鏈接。因此用來外部鏈接的函數,聲明時有無extern都可以連接通過。而全局變量則不行。通常,在模塊的頭文件中,對本模塊提供給其他模塊引用的函數和全局變量以關鍵字extern聲明。
-
C語言的第一個程序
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的`編程語言。下面小編帶大家看看第一個C語言程序。第一個C語言程序實例説明輸出"Hello,world!"是...
-
C語言考試機試經驗三部曲
全國計算機等級考試的持續升温,至使全國計算機等級考試證書已成為國家公務員、國家企事業單位工作人員、公司員工等上崗、加薪、提拔的必備條件。以下是本站小編整理的C語言考試機試經驗三部曲,希望可以為您的考試帶來幫助!第一部:備考篇名將不打無準備之仗,複習備...
-
C語言選擇結構
引導語:選擇結構用於判斷給定的條件,根據判斷的結果判斷某些條件,根據判斷的結果來控制程序的流程。以下是本站小編分享給大家的C語言選擇結構,幫助大家鞏固C語言基礎,歡迎閲讀學習!1.1用if語句實現選擇結構1.在C語言中,if語句有兩種形式:形式1:if(表達式)語句形式2:if(...
-
C語言順序結構知識歸納
C語言的順序結構裏面有哪些知識需要學習的呢,下面小編為大家歸納了C語言順序結構知識,歡迎大家閲讀!C語言順序結構知識歸納一、表達式語句、函數調用語句和空語句1.C語言的語句共分五大類:表達式語句、控制語句、函數調用語句、空語句和複合語句。2.表達式語句的...
相關文章
- 託福英語寫作範文:Examinations exert a pernicious influence on educat
- JavaScript中的style.cssText使用教程分解
- C語言中的static和extern關鍵字的作用
- VOA的慢速英語聽力文摘:Mystery at The Ice Castle Inn
- The Sprint in College Entrance Exam英語作文
- ,javascript break和continue區別
- 七年級英語Unit 12 My favorite subject is science 課後練習題答
- C++中const-cast與reinterpret-cast運算符的用法
- great expectations的中文翻譯是什麼
- The relationship between theory and practice大學英語作文