#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void s(int m){
if(m == 5){
return;
}
static int n = 0;
n++;
printf("%d\n", m);
s(n);
}
int main(){
s(0);
}
運行結果
將static int n = 0, 改爲 static int n = 1
2、violate關鍵字
原文http://blog.chinaunix.net/uid-26694208-id-3345118.html
int i=10;
int j = i; //(1)語句
int k = i;//(2)語句
volatile int i=10;
int j = i; //(3)語句
int k = i;//(4)語句
volatile 關鍵字告訴編譯器i 是隨時可能發生變化的,每次使用它的時候必須從內存中取出i的值,因而編譯器生成的彙編代碼會重新從i 的地址處讀取數據放在k 中。這樣看來,如果i 是一個寄存器變量或者表示一個端口數據或者是多個線程的共享數據,就容易出錯,所以說volatile 可以保證對特殊地址的穩定訪問。