答案應該是編譯時賦值。
驗證過程:
隨便寫乙個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 關鍵字的優勢。想知道經 ...