變量是對程序中數(shù)據(jù)的存儲空間的抽象,變量的屬性,數(shù)據(jù)類型:變量所持有的數(shù)據(jù)的性質(zhì)(操作屬性)
一、局部變量
在函數(shù)內(nèi)定義,只在本函數(shù)內(nèi)有效。main中定義的變量只在main中有效,不同函數(shù)中同名變量,占不同內(nèi)存單元。形參屬于局部變量。可定義在復(fù)合語句中有效的變量
局部變量可用存儲類型:auto register static (默認(rèn)為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);
}
運行結(jié)果:
main:a=3,b=4
sub:a=6,b=7
main:a=3,b=4
二、全局變量
在函數(shù)外定義,可為本文件所有函數(shù)共用,從定義變量的位置開始到本源文件結(jié)束,及有extern說明的其它源文件。
外部變量說明:extern 數(shù)據(jù)類型 變量表;
外部變量定義與外部變量說明不同;
若外部變量與局部變量同名,則外部變量被屏蔽
外部變量可用存儲類型:缺省 或 static
應(yīng)盡量少使用全局變量,因為:
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);
}
- 局部變量默認(rèn)為auto型uregister型變量個數(shù)受限,且不能為long, double, float型
- 局部static變量具有全局壽命和局部可見性
- 局部static變量具有可繼承性
- extern不是變量定義,可擴展外部變量作用域
-
程序
+關(guān)注
關(guān)注
117文章
3796瀏覽量
81418 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28466 -
存儲空間
+關(guān)注
關(guān)注
0文章
55瀏覽量
10726
發(fā)布評論請先 登錄
相關(guān)推薦
跟著狄泰唐老師學(xué)C語言進(jìn)階教程的筆記之變量的屬性
嵌入式C語言之變量與常量詳解
嵌入式C語言之變量與常量簡析
高效的C編程之變量類型
![高效的<b class='flag-5'>C</b>編程<b class='flag-5'>之變量</b>類型](https://file.elecfans.com/web2/M00/4A/0E/pYYBAGKhvI-AcsHTAAArjReA0o8586.png)
python教程之變量和簡單數(shù)據(jù)類型
![python教程<b class='flag-5'>之變量</b>和簡單數(shù)據(jù)類型](https://file.elecfans.com/web1/M00/BB/09/o4YBAF6lTKGAAbnJAAPeBgz7yHg560.png)
C語言中局部變量和全局變量
C語言變量應(yīng)用詳解
![<b class='flag-5'>C</b>語言<b class='flag-5'>變量</b>應(yīng)用詳解](https://file1.elecfans.com/web2/M00/C4/BC/wKgZomX3sv2AGVWeAABMt9agjcE672.png)
評論