1. 程式人生 > >c語言static與extern的用法

c語言static與extern的用法

一,static和extern:
    大工程下我們會碰到很多原始檔。
檔案a.c
static int i; //只在a檔案中用
int j;   //在工程裡用
static void init()         //只在a檔案中用
{
}
void callme()          //在工程中用
{
   static int sum;
}
上面的全域性i變數和init()函式只能用在a.c檔案中,全域性變數sum的作用域只在callme裡。變數j和函式callme()的全侷限擴充到整個工程檔案。所以可以在下面的b.c中用extern關鍵字呼叫。extern告訴編譯器這個變數或者函式在其他檔案裡已經被定義了。
檔案b.c
extern int j;    //呼叫a檔案裡的
extern void callme();  //呼叫a檔案裡的
int main()
{
  ...
}
extern的另外用法是當C和C++混合程式設計時如果c++呼叫的是c原始檔定義的函式或者變數,那麼要加extern來告訴編譯器用c方式命名函式:
檔案A.cpp呼叫a.c裡面的變數i和函式callme()
extern "C"  //在c++檔案裡呼叫c檔案中的變數
{
   int j;
   void callme();
}
int main()
{
   callme();
}
二,static法則:

    A、若全域性變數僅在單個C檔案中訪問,則可以將這個變數修改為靜態全域性變數,以降低模組間的耦合度;
    B、若全域性變數僅由單個函式訪問,則可以將這個變數改為該函式的靜態區域性變數,以降低模組間的耦合度;
    C、設計和使用訪問動態全域性變數、靜態全域性變數、靜態區域性變數的函式時,需要考慮重入問題;
本篇文章來源於 飛揚教程 原文連結:http://www.51fy.cn/program/C/200711/43385.htm 

相關推薦

c語言staticextern用法

一,static和extern:     大工程下我們會碰到很多原始檔。 檔案a.c static int i; //只在a檔案中用 int j;   //在工程裡用 static void init()         //只在a檔案中用 { } void callme()

關於c語言中關鍵字extern用法

com 分享 color ima pri int round mage printf 看c語言的ppt看到extern中的生命外部變量,懵逼了。然後在網上查了關於extern的用法。都不是我想要的。 找了半個小時,又寫寫程序,算是明白了。 extern聲明外部變量時候,也

C語言C語言staticextern區別

目錄: 【static】 【extern】 1.static · 定義一個內部函式/變數。 · 宣告一個內部函式/變數。 2.extern · 定義一個外部函式/變數。 · 宣告一個外

C語言中staticextern用法

在C語言中,static與extern的用法 (1)修飾區域性變數 a.一般情況下,對於區域性變數是存放在棧區的,並且區域性變數的生命週期在該語句塊執行結束時便結束了。但是如果用static進行修飾的話,該變數便存放在靜態資料區,其生命週期一直持續到整個程式

c語言 static用法

end 離開 數據 平時 所有 希望 結構化 bsp sum static在c裏面可以用來修飾變量,也可以用來修飾函數。先看用來修飾變量的時候。變量在c裏面可分為存在全局數據區、棧和堆裏。其實我們平時所說的堆棧是棧而不是堆,不要弄混。int a ;int main(){

C++ :staticextern用法總結

1. static關鍵字 1.1 函式和變數宣告(C/C++) static全域性變數: 當宣告一個static全域性變數,則表示靜態全域性變數,和其他變數一樣,存放在.data(初始化了)

C語言 STATIC用法

 STATIC 用法有三種  1.對於區域性變數的修飾 如 static int a = 10; 加static修飾後,變數存放於全域性資料區  .data 意思就是和全域性變數一樣,值在函式函

一些對staticextern用法及理解

static為靜態變數,初始化語句僅執行一次,不初始化則預設為0,因為靜態記憶體(堆)中所有位元組位(不知道術語是啥,反正大概就是一個位元組裡儲存的內容的意思吧)預設為0000 0000,宣告的靜態變數會在堆中開闢相應的記憶體,靜態變數與棧中的動態變數所不同的是,靜態變數不會

c語言opensys_open的用法

開發十年,就只剩下這套架構體系了! >>>   

基於C語言EOFgetchar的使用詳解

shp fct ongl jdb sys sgi utf lba egg %E8%AF%B7%E6%95%99%E9%AB%98%E6%89%8B%E5%A4%9A%E7%BA%BF%E7%A8%8B%E9%87%8C%E6%80%8E%E4%B9%88%E4%BD%BF%

c語言中#和##的用法

報錯 用法 == 預處理器 tor () name 文件 就是 一、一般用法 我們使用#把宏參數變為一個字符串,用##把兩個宏參數貼合在一起. 用法: #include<cstdio> #include<climits> using namespac

C語言 分支循環 遞推思想

post 16px play 邊界 color clu 技術分享 細節 open 條件語句 開關控制語句(SWITCH語句) 象坐電梯一樣,break是按的樓層,不加break則會一直執行下去。 上面程序有細節BUG,邊界測試輸入-5,105時由於整除會得到

C語言 static靜態變量的作用

middle sel ide mic 進行 otto pla .net round C語言 static靜態變量的作用static c語言的變量種類 靜態變量通過關鍵字 static 進行聲明,該變量存儲在數據段上,也就是內存上,可以改變變量的作用域和生命周期。 對於

C語言常量變量的應用

其中 dot 任務 數值計算 計算 繪圖 承載 urn 字符 程序的世界中,可以讓計算機按照指令做很多事情,如進行數值計算、圖像顯示、語音對話、視頻播放、天文計算、發送郵件、遊戲繪圖以及任何我們可以想象到的事情。要完成這些任務,程序需要使用數據,即承載信息的數字與字符。 在

C++之StaticConst

iostream http cout 出錯 共享 return share block this 指針 目錄 C++之Static與Const 一、Static定義 1.1、Static變量 1.2、static靜態成員小結 1.2、Static函數 1.3、static

C語言學習及應用筆記之二:C語言static關鍵字及其使用

static關鍵字 可能 語言 需要 c語言 UNC function 不必要 能夠   C語言有很多關鍵字,大多關鍵字使用起來是很明確的,但有一些關鍵字卻要相對復雜一些。我們這裏要說明的static關鍵字就是如此,它的功能很強大,相應的使用也就更復雜。   一般來說sta

C語言 —— charunsigned char

pri pre unsigned clas 輸出結果 類型 有符號數 nbsp sign 1 #include <stdio.h> 2 int main() 3 { 4 unsigned char a = 128; 5 char b = a;

嵌入式C語言--指標字串

使用指標這一工具來操作字串。 定義字串變數的初始化方法 char *strptr = "liefyuan"; char strarray1[] = "liefyuan"; char strarray2[8] = "liefyuan"; char strarray3[8] = {'

C語言幾個函式用法小結

1.char *ultoa(unsigned long value,char *string,int radix)  將無符號整型數value轉換成字串並返回該字串,radix為轉換時所用基數  2.char *ltoa(long value,char *string,i

Objective-C語言基礎總結

什麼是Objective-C Objective-C是C語言的一個超集,具有面向物件的特性,並具備了強大的執行時動態語言特性。 Objective-C的優缺點 優點: 作為C語言的超級,在C語言的基礎上衍生了很多新的語言特徵,封裝的很完善且使用方便,大大降低了程式設