华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
全國  |             |          |          |          |          |         
  當前位置:計算機等級 > 二級考試 > C語言程序設計 > C語言輔導 > 文章內(nèi)容
  

全國計算機等級考試二級C語言入門教程(73)

中華IT學院   【 】  [ 2016年2月4日 ]

函數(shù)的值


函數(shù)的值是指函數(shù)被調(diào)用之后, 執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值。如調(diào)用正弦函數(shù)取得正
弦值,調(diào)用例 5.1的 max函數(shù)取得的最大數(shù)等。對函數(shù)的值(或稱函數(shù)返回值)有以下一些說明:

1. 函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。return 語句的一般形式為:
return 表達式;
或者為:
return (表達式);
該語句的功能是計算表達式的值,并返回給主調(diào)函數(shù)。 在函數(shù)中允許有多個 return語句,但每次調(diào)用只能有一個
return 語句被執(zhí)行, 因此只能返回一個函數(shù)值。
2. 函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應保持一致。 如果兩者不一致,則以函數(shù)類型為準,自動進行類型轉(zhuǎn)換。
3. 如函數(shù)值為整型,在函數(shù)定義時可以省去類型說明。
4. 不返回函數(shù)值的函數(shù),可以明確定義為“空類型”, 類型說明符為“void”。如例 5.3中函數(shù) s并不向主函數(shù)返
函數(shù)值,因此可定義為:
void s(int n)
{ ……
}


一旦函數(shù)被定義為空類型后, 就不能在主調(diào)函數(shù)中使用被調(diào)函數(shù)的函數(shù)值了。例如,在定義 s為空類型后,在主
函數(shù)中寫下述語句 sum=s(n); 就是錯誤的。為了使程序有良好的可讀性并減少出錯, 凡不要求返回值的函數(shù)都應定
義為空類型。函數(shù)說明在主調(diào)函數(shù)中調(diào)用某函數(shù)之前應對該被調(diào)函數(shù)進行說明,這與使用變量之前要先進行變量說明
是一樣的。 在主調(diào)函數(shù)中對被調(diào)函數(shù)作說明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)返回值的類型, 以便在主調(diào)函數(shù)中按
此種類型對返回值作相應的處理。 對被調(diào)函數(shù)的說明也有兩種格式,一種為傳統(tǒng)格式,其一般格式為: 類型說明符 被
調(diào)函數(shù)名();這種格式只給出函數(shù)返回值的類型,被調(diào)函數(shù)名及一個空括號。


這種格式由于在括號中沒有任何參數(shù)信息, 因此不便于編譯系統(tǒng)進行錯誤檢查,易于發(fā)生錯誤。另一種為現(xiàn)代格
式,其一般形式為:
類型說明符 被調(diào)函數(shù)名(類型 形參,類型 形參…);
或為:
類型說明符 被調(diào)函數(shù)名(類型,類型…);

現(xiàn)代格式的括號內(nèi)給出了形參的類型和形參名, 或只給出形參類型。這便于編譯系統(tǒng)進行檢錯,以防止可能出現(xiàn)
的錯誤。例 5.1 main函數(shù)中對 max函數(shù)的說明若
用傳統(tǒng)格式可寫為:
int max();
用現(xiàn)代格式可寫為:
int max(int a,int b);
或?qū)憺?
int max(int,int);

C語言中又規(guī)定在以下幾種情況時可以省去主調(diào)函數(shù)中對被調(diào)函數(shù)的函數(shù)說明。

1. 如果被調(diào)函數(shù)的返回值是整型或字符型時, 可以不對被調(diào)函數(shù)作說明,而直接調(diào)用。這時系統(tǒng)將自動對被調(diào)函數(shù)
返回值按整型處理。例 5.3的主函數(shù)中未對函數(shù) s作說明而直接調(diào)用即屬此種情形。
2. 當被調(diào)函數(shù)的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前時, 在主調(diào)函數(shù)中也可以不對被調(diào)函數(shù)再作說明而直接調(diào)用。例如例
5.1中, 函數(shù) max的定義放在main 函數(shù)之前,因此可在main函數(shù)中省去對 max函數(shù)的函數(shù)說明 int max(int a,int
b)。
3. 如在所有函數(shù)定義之前, 在函數(shù)外預先說明了各個函數(shù)的類型,則在以后的各主調(diào)函數(shù)中,可不再對被調(diào)函數(shù)作
說明。例如:
char str(int a);
float f(float b);
main()
{
……
}
char str(int a)
{
……
}
float f(float b)
{
……
}


其中第一,二行對str函數(shù)和 f函數(shù)預先作了說明。 因此在以后各函數(shù)中無須對 str和f函數(shù)再作說明就可直接調(diào)用。


4. 對庫函數(shù)的調(diào)用不需要再作說明, 但必須把該函數(shù)的頭文件用 include命令包含在源文件前部。數(shù)組作為函數(shù)參
數(shù)數(shù)組可以作為函數(shù)的參數(shù)使用,進行數(shù)據(jù)傳送。 數(shù)組用作函數(shù)參數(shù)有兩種形式,一種是把數(shù)組元素(下標變量)作為
實參使用;另一種是把數(shù)組名作為函數(shù)的形參和實參使用。一、數(shù)組元素作函數(shù)實參數(shù)組元素就是下標變量,它與普
通變量并無區(qū)別。 因此它作為函數(shù)實參使用與普通變量是完全相同的,在發(fā)生函數(shù)調(diào)用時, 把作為實參的數(shù)組元素
的值傳送給形參,實現(xiàn)單向的值傳送。例5.4說明了這種情況。[例5.4]判別一個整數(shù)數(shù)組中各元素的值,若大于0 則
輸出該值,若小于等于0則輸出 0值。編程如下:
void nzp(int v)
{
if(v>0)
printf("%d ",v);
else
printf("%d ",0);
}
main()
{
int a[5],i;
printf("input 5 numbers\n");
for(i=0;i<5;i++)



{

scanf("%d",&a[i]);

nzp(a[i]);

}

}void nzp(int v)

{ ……

}

main()

{

int a[5],i;

printf("input 5 numbers\n");

for(i=0;i<5;i++)

{ scanf("%d",&a[i]);

nzp(a[i]);

}

}
本程序中首先定義一個無返回值函數(shù)nzp,并說明其形參v 為整型變量。在函數(shù)體中根據(jù) v值輸出相應的結(jié)果。

在main函數(shù)中用一個for 語句輸入數(shù)組各元素,每輸入一個就以該元素作實參調(diào)用一次nzp函數(shù),即把a[i]的值傳

送給形參v,供 nzp函數(shù)使用。

分享到:
本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務  聯(lián)系方式  站內(nèi)導航  考試論壇
Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營業(yè)執(zhí)照
淮阳县| 云和县| 昭通市| 屏边| 札达县| 子长县| 金寨县| 岱山县| 祁连县| 改则县| 右玉县| 韩城市| 全南县| 屯昌县| 凤山县| 正安县| 呼图壁县| 汽车| 朝阳县| 弋阳县| 海盐县| 紫金县| 礼泉县| 新津县| 陇川县| 天全县| 西峡县| 盖州市| 托里县| 唐河县| 长春市| 北碚区| 新巴尔虎左旗| 多伦县| 南雄市| 莱阳市| 韩城市| 南宫市| 航空| 乐清市| 河津市|