[問題] 函數內靜態變數的初始化順序
最近在學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
推
05/25 22:48, , 1F
05/25 22:48, 1F
→
05/25 22:51, , 2F
05/25 22:51, 2F
推
05/25 22:56, , 3F
05/25 22:56, 3F
推
05/25 22:58, , 4F
05/25 22:58, 4F
→
05/25 22:58, , 5F
05/25 22:58, 5F
→
05/25 23:11, , 6F
05/25 23:11, 6F
→
05/26 09:44, , 7F
05/26 09:44, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章