C語言中static型別的變數何時賦值?

2021-06-28 02:30:52 字數 584 閱讀 2997

答案應該是編譯時賦值。

驗證過程:

隨便寫乙個c語言程式,如下:

#include "stdio.h"

int main()

用gcc編譯,生成目標檔案:gcc -c test_static.c -o test_static.o

靜態變數的位置與全域性變數相同。如果是已初始化的靜態變數,則存放在.data段中,如果是未初始化的,則存放在.bss段中。

用objdump檢視生成的目標檔案。

objdump -t test_static.o

可以看到,目標檔案中的符號及段資訊。

objdump -j .data -s test_static.o

顯示資訊如下:

附:常用objdump命令:

objdump -t obj檔名: 輸出目標檔案的符號表

objdump -h obj檔名: 輸出目標檔案的所有段概括

objdump -j .text/.data -s obj檔名: 輸出指定段的資訊

c語言中static型別

靜態變數都儲存與靜態儲存區中。1.靜態區域性變數 靜態區域性變數屬於靜態儲存方式,它具有以下特點 1 靜態區域性變數在函式內定義 它的生存期為整個源程式,但是其作用域仍與自動變數相同,只能在定義該變數的函式內使用該變數。退出該函式後,儘管該變數還繼續存在,但不能使用它。2 允許對構造類靜態區域性量賦...

C語言中的 static變數 static函式

摘自 1.static 變數 靜態變數的型別 說明符是static。靜態變數當然是屬於靜態儲存方式,但是屬於靜態儲存方式的量不一定就是靜態變數。例如外部變數雖屬於靜態 儲存方式,但不一定是靜態變數,必須由 static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。2.靜態區域性變數 靜態區域性...

C語言中static變數詳解

static翻譯出來是 靜態 靜止 的意思,在 c語言中的意思其實和它的本意差不多,表示 靜態 或者 全域性 的意思,用來修飾變數和函式。經 static 修飾過後的變數或者函式的作用域或者儲存域會發生變化,而由 static 修飾的變數在初始值方面也會表現出 static 關鍵字的優勢。想知道經 ...