看板 C_and_CPP 關於我們 聯絡資訊
最近在學c,有一個範例程式,是在介紹宣告變數的各種等級 程式如下: #include <stdio.h> void varfunction() { int var = 0; static int static_var = 0; printf("var = %d \n",var); printf("static static_var = %d \n",static_var); var++; static_var++; } int main() { int i; for ( i = 0; i < 3; i++ ) varfunction(); return 0; } 顯示結果為: var = 0 static_var=0 var = 0 static_var=1 var = 0 static_var=2 他主要是想介紹static的變數宣告並不會隨著函數的結束 而導致資料的消失,可是我有個問題,在副函數的部分 有這麼一行 static int static_var = 0; 那不是三次進副函數都會把stasic_var歸零嗎? 為何還能印出0,1,2 敢請指教@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.1.29
dendrobium:那個static的初始化只會在程式的一開始執行 05/25 22:48
Fan383:喔喔 請問是所有副函式的宣告部分都只會執行一次嗎? 05/25 22:51
dendrobium:function中的static變數都只會在程式開始時初始化 05/25 22:56
dendrobium:以上是C, 如果是C++的話則是在第一次執行函式的時候才 05/25 22:58
dendrobium:初始化 大概是這樣 05/25 22:58
Fan383:嗯嗯 感謝樓上 05/25 23:11
BombCat:C的static變數不是在compile time就初始化在obj裡了 (? 05/26 09:44