static,extern詳細用法

2021-07-23 11:29:38 字數 902 閱讀 9463

/*

static

c語言:

static 的作用:

1、全域性靜態變數:

(1)在全域性靜態區分配記憶體

(2)如果沒有初始化,其預設值是0

(3改變量在本檔案內從定義開始到檔案結束可見

2、區域性靜態變數:

(1)改變量在全域性靜態區分配記憶體

(2)如果不顯示初始化,那麼將被初始化為0

(3)它始終在全域性靜態區,直到程式執行結束

(4)其作用域為區域性作用域,當定義他的函式或語句塊結束時,其作用域隨之結束

3、定義靜態函式

(1)靜態函式只能在本原始檔中使用

(2)在檔案作用域中宣告的inline函式預設為static型別

c++:

c++中新增了兩種作用:定義靜態資料成員或靜態函式成員

(1)記憶體分配:靜態資料成員在程式的全域性靜態區分配

(2)初始化和定義:靜態資料成員定義時要分配空間,所以不能在類宣告中定義

*//*

extern:

extern 可以置於變數前或函式前,以在別的檔案中標識變數或函式的定義,並提示編譯器遇到此變數或函式時在其他模組中尋找其定義,

對於extern變數來說,僅僅是乙個變數的宣告,並不是定義,不會分配記憶體空間。

extern 表示將變數或函式宣告作為外部鏈結,變數預設是內部鏈結,函式預設是外部鏈結

*/#define _crt_secure_no_warnings

#include #include #include extern int num = 5;

void func();

char *test01()

void test02()

void main()

static extern分析總結

一 c語言記憶體空間布局 下面是google上找的一張c記憶體布局圖,我先基於這張圖介紹下各個記憶體區域的情況 1 正文 段 每個程式開始前,都有系統載入 指令到這裡,用於執行,當然都是機器碼 2 初始化的資料段 存放已經初始化的非自動變數,如全域性變數int i 0 等等 3 未初始化的資料段 b...

看書雜記 static extern

一 函式中的區域性變數都是動態分配儲存空間的,資料儲存在動態儲存區中,函式呼叫結束後即消失,釋放儲存空間。若是希望函式中的區域性變數在呼叫結束後仍保留原值,也不釋放儲存單元,則可使用關鍵字static宣告區域性變數是靜態變數。函式編譯時在靜態儲存區分配儲存單元,函式呼叫結束後不釋放儲存單元,直到程式...

作用域,變數(static,extern)

1.extern既可以在同檔案中使用也可以跨c檔案使用,在同檔案可以跨作用域。2.全域性變數 int a 初始化預設為0 區域性變數int a 初始化可能為隨機值,有些平台可能無法通過 如果加static預設為0 3.static既可以修飾全域性變數也可以修飾區域性變數 static區域性變數初始化...