C語言中static關鍵字的作用

2021-10-03 13:50:13 字數 1407 閱讀 5472

static用法:

在c中,static主要定義全域性靜態變數、定義區域性靜態變數、定義靜態函式。

1、定義全域性靜態變數:在全域性變數前面加上關鍵字static,該全域性變數變成了全域性靜態變數。全域性靜態變數有以下特點。

a.在全域性區分配記憶體。

b.如果沒有初始化,其預設值為0.

c.該變數在本檔案內從定義開始到檔案結束可見。

2、定義區域性靜態變數:在區域性變數前面加上關鍵字static,其特點如下:

a.該變數在全域性資料區分配記憶體。

b.它始終駐留在全域性資料區,直到程式執行結束。

c. 其作用域為區域性作用域,當定義它的函式或語句塊結束時,其作用域隨之結束。

#include

voidfn(

void

)void

fn_static

(void

)int

main

(void

)

執行**結果

->%.

/a.out

n=10 n++=11

static n=

10 n++=11

n=10 n++=11

static n=

11 n++=12

//當反覆呼叫fn_static()函式時,n的值就第一遍的時候為10,後面反覆呼叫的時候n的初值為前一次呼叫值的n++。

3、定義靜態函式:在函式返回型別前加上static關鍵字,函式即被定義為靜態函式,其特點如下:

a.靜態函式只能在本原始檔中使用

b.在檔案作用域中宣告的inline函式預設為static型別

複製**

/* file1.c */

#include

static

void

fun(

void

)int

main

(void

)/* file2.c */

#include

static

void

fun1

(void

)

複製**

/tmp/cc2vmzgr.o:在函式『main』中:

static_fun.c:

(.text+

0x20

):對『fun1』未定義的引用

collect2: error: ld returned 1 exit status

總結:用static定義的全域性和區域性靜態變數的區別是,全域性的靜態變數的作用域和可見域都是從檔案的定義開始到整個檔案結束;而區域性的靜態變數可見域是從檔案的定義開始到整個檔案結束,作用域是從該語句塊的定義開始到該語句塊結束。

C語言中的static關鍵字

c語言中的變數 1.自動變數。變數在執行到他的塊尾時就超出了作用域,它在堆疊上分配的記憶體會被釋放,以供另乙個函式使用。它們是在宣告時自動建立的,在程式退出宣告它的塊後自動刪除。2.全域性變數。可以在任意位置訪問,它的宣告方式和一般變數相同,但是它的位置非常重要,這個位置決定了變數是否為全域性變數。...

C語言中的static關鍵字

static關鍵字,意為靜態。靜態區域性變數void add test 靜態全域性變數 c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化...

C語言中static關鍵字用法

static關鍵字在c語言中比較常用,使用恰當能夠大大提高程式的模組化特性,有利於擴充套件和維護。變數1.區域性變數 普通區域性變數是再熟悉不過的變數了,在任何乙個函式內部定義的變數 不加static修飾符 都屬於這個範疇。編譯器一般不對普通區域性變數進行初始化,也就是說它的值在初始時是不確定的,除...