//定義並調用含靜態變量計算n!
#include<stdio.h>
double fact_s(int n);
int main(void){
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%3d! =%.0f\n",i,fact_s(i));
}
return 0;
}
double fact_s(int n){
static double f=1;
f=f*n;
return (f);
}
全局變量可做用於全部函數,靜態變量只能用於所定義的函數,而不能用於其餘函數
若把靜態變量定義爲普通局部變量,看看能不能實現計算n! 的功能:
#include<stdio.h>
double fact_s(int n);
int main(void){
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%3d! =%.0f\n",i,fact_s(i));
}
return 0;
}
double fact_s(int n){
double f=1;
f=f*n;
return (f);
}
靜態局部變量不會像普通局部變量那樣由於函數調用結束被系統回收,它的生存週期會持續到程序結束。若是含有靜態局部變量的函數再次被調用,則靜態局部變量會被從新激活,上這次函數調用的值仍然保存着,供本次調用繼續使用。函數
若是把f換成全局變量呢? 3d
#include<stdio.h>
double f;
double fact_s(int n);
int main(void){
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%3d! =%.0f\n",i,fact_s(i));
}
return 0;
}
double fact_s(int n){
double f=1;
f=f*n;
return (f);
}
仍是不行,結果和把f換成局部變量同樣blog
使用含有靜態局部變量的函數,是特殊的計算循環的方式 io