變量是對程序中數(shù)據(jù)的存儲空間的抽象,變量的屬性,數(shù)據(jù)類型:變量所持有的數(shù)據(jù)的性質(操作屬性)
一、局部變量
在函數(shù)內(nèi)定義,只在本函數(shù)內(nèi)有效。main中定義的變量只在main中有效,不同函數(shù)中同名變量,占不同內(nèi)存單元。形參屬于局部變量??啥x在復合語句中有效的變量
局部變量可用存儲類型:auto register static (默認為auto)
函數(shù)舉例:
main()
{ int a,b;
a=3;
b=4;
printf("main:a=%d,b=%d\\n",a,b);
sub();
printf("main:a=%d,b=%d\\n",a,b);
}
sub()
{ int a,b;
a=6;
b=7;
printf("sub:a=%d,b=%d\\n",a,b);
}
運行結果:
main:a=3,b=4
sub:a=6,b=7
main:a=3,b=4
二、全局變量
在函數(shù)外定義,可為本文件所有函數(shù)共用,從定義變量的位置開始到本源文件結束,及有extern說明的其它源文件。
外部變量說明:extern 數(shù)據(jù)類型 變量表;
外部變量定義與外部變量說明不同;
若外部變量與局部變量同名,則外部變量被屏蔽
外部變量可用存儲類型:缺省 或 static
應盡量少使用全局變量,因為:
Y全局變量在程序全部執(zhí)行過程中占用存儲單元Y降低了函數(shù)的通用性、可靠性,可移植性Y降低程序清晰性,容易出錯。
float max,min;
float average(float array[], int n)
{ int i; float sum=array[0];
max=min=array[0];
for(i=1;iif(array[i]>max) max=array[i];
else if(array[i]array[i];
sum+=array[i];
}
return(sum/n);
}
main()
{ int i; float ave,score[10];
/*Input */
ave=average(score,10);
printf("max=%6.2f\\nmin=%6.2f\\n
average=%6.2f\\n",max,min,ave);
}
- 局部變量默認為auto型uregister型變量個數(shù)受限,且不能為long, double, float型
- 局部static變量具有全局壽命和局部可見性
- 局部static變量具有可繼承性
- extern不是變量定義,可擴展外部變量作用域
-
程序
+關注
關注
116文章
3756瀏覽量
80753 -
變量
+關注
關注
0文章
613瀏覽量
28306 -
存儲空間
+關注
關注
0文章
54瀏覽量
10663
發(fā)布評論請先 登錄
相關推薦
評論