3. 前面已經(jīng)討論過,在變量作函數(shù)參數(shù)時,所進(jìn)行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同, 而形參的值發(fā)生改變后,實參并不變化, 兩者的終值是不同的。例5.3證實了這個結(jié)論。 而當(dāng)用數(shù)組名作函數(shù)參數(shù)時,情況則不同。 由于實際上形參和實參為同一數(shù)組, 因此當(dāng)形參數(shù)組發(fā)生變化時,實參數(shù)組也隨之變化。 當(dāng)然這種情況不能理解為發(fā)生了“雙向”的值傳遞。但從實際情況來看,調(diào)用函數(shù)之后實參數(shù)組的值將由于形參數(shù)組值的變化而變化。為了說明這種情況,把例5.4改為例5.6的形式。[例5.6]題目同5.4例。改用數(shù)組名作函數(shù)參數(shù)。
void nzp(int a[5])
{
int i;
printf("\nvalues of array a are:\n");
for(i=0;i<5;i++)
{
if(a[i]<0) a[i]=0;
printf("%d ",a[i]);
}
}
main()
{
int b[5],i;
printf("\ninput 5 numbers:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
printf("initial values of array b are:\n");
for(i=0;i<5;i++)
printf("%d ",b[i]);
nzp(b);
printf("\nlast values of array b are:\n");
for(i=0;i<5;i++)
printf("%d ",b[i]);
}
void nzp(int a[5])
{ ……
}
main()
{
int b[5],i;
……
nzp(b);
……
}
相關(guān)推薦:計算機(jī)等考二級C語言備考:C語言/C++編譯過程北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |