通常,希望通過函數使主調函數得到一個確定的值,這就是函數的返回值。
說明:1、函數的返回值是通過函數的return語句獲得的。
(1)return語句將被調函數中的一個確定值帶回主調函數中去。
(2)若需要從被調函數帶回一個值供主調函數使用,被調函數必須包含return語句。如果不需要就可以不帶。
(3)一個函數語句可以有一個以上的return語句,執行到哪一個return語句,哪一個語句起作用。return語句后面的括弧也可以不要。如:return 2;等價於:return(2);
(4)return后的值可以是一個表達式。
例:int max(int x,int y);
{
return(x>y?x:y);
}
2、(1)函數的返回值應當屬於某一個確定的類型,在定義函數時指定函數返回值的類型。
例:int max(float x,float y) /*函數的值為整型*/
(2)在C語言中,凡不加類型說明符的函數自動按整形處理。
3、(1)在定義函數時指定函數的類型一般應和return語句中的表達式類型一致。如果函數值的類型和return語句表達式的值不一致,則以函數類型為准。對數值型數據可以自動進行類型轉換。
(2)對於不帶回值的函數,應當用“viod”定義函數為無類型(空類型)。這樣,系統就保證不使函數帶回任何值。此時,在函數體中不得出現return語句。
例:(反例)
#include <stdafx.h> #include<stdio.h> void main() { int max(float x,float y); float a,b; int c; scanf("%d%d",&a,&b); c=max(a,b); printf("Max is %d:\n",c); } int max(float x,float y) { float z; z=x>y?x:y; return(z); }
正例:
#include <stdafx.h> #include<stdio.h> void main() { float max(float x,float y); float a,b; float c; scanf("%f%f",&a,&b); c=max(a,b); printf("Max is %f:\n",c); } float max(float x,float y) { float z; z=x>y?x:y; return(z); }