傳回型別
函式的傳回型別建立的函式所傳回的值類型及大小,而對應的型別規範中以下的語法:
語法
函式定義:
宣告規範選擇屬性 seq 選擇宣告子宣告清單選擇複合陳述式/ * 屬性 seq 為 Microsoft 特定 * /
宣告規範:
儲存類別規範的宣告規範opt型別規範的宣告規範opt
型別限定詞的宣告規範opt
型別規範:
voidchar
short
int
long
float
double
帶正負號
不帶正負號
結構或位等位的規範
列舉規範
typedef 名稱
型別規範可以指定任何項基本原則,結構或等位型別。 如果您不希望將型別規範,傳回的型別int假設。
函式定義中給定的傳回型別必須符合在宣告中的程式中的其他函式的傳回型別。 函式傳回值,當return包含之運算式的陳述式被執行。 運算式評估時,如果有需要,並傳回至呼叫函數的點轉換成傳回值的型別。 如果傳回型別宣告的函式void、 包含運算式的 return 陳述式會產生警告,並不會評估運算式。
下列範例說明函式傳回值。
typedef struct
{
char name[20];
int id;
long class;
} STUDENT;
/* Return type is STUDENT: */
STUDENT sortstu( STUDENT a, STUDENT b )
{
return ( (a.id < b.id) ? a : b );
}
這個範例會定義STUDENT鍵入與typedef宣告並定義該函式sortstu讓STUDENT傳回型別。 函式會指定,並傳回其結構的兩個引數之一。 在函式的後續呼叫,編譯器會檢查以確定引數型別都是STUDENT。
注意事項 |
---|
傳遞結構而定,而不是整個結構的指標,會增進效率。 |
char *smallstr( char s1[], char s2[] )
{
int i;
i = 0;
while ( s1[i] != '\0' && s2[i] != '\0' )
i++;
if ( s1[i] == '\0' )
return ( s1 );
else
return ( s2 );
}
這個範例會定義函式傳回的字元陣列的指標。 此函式會將兩個字元陣列 (字串) 做為引數和傳回的指標,以較短的兩個字串。 陣列的指標指到陣列元素中的第一個且有其型別 ; 因此,此函式的傳回型別是變數的指標,輸入char。
您不需要宣告函式, int傳回型別,您是在呼叫它們,雖然建議,以便正確檢查引數和傳回值的型別時會出現的原型。