C語言中的返回語句



return 語句終止函式的執行,並將控制權返回給呼叫函式。每個函式都應該以return語句作為其最後一條語句。使用return語句時,返回型別和返回值(表示式)必須相同。

return語句的語法

以下是return語句的語法:

return value_or_expression;

下面的main()函式顯示return作為其最後一條語句:

int main(){
   // function body;
   return 0;
}

main()函式返回0表示函式成功完成。要指示函式失敗,則返回一個非零表示式。

void返回語句

函式的返回型別可以是void。在這種情況下,return語句是可選的。它可以省略,或者使用不帶任何表示式的return。

示例

#include <stdio.h>
/* function declaration */
void test(){
   return;
}
int main() {
   test();
   printf("end");
   return 0;
}

return語句中的返回型別不匹配

程式中的每個函式都必須有其原型的向前宣告。預設情況下,每個函式都返回一個整數。但是,沒有原型的其他返回型別的函式是不可接受的。

示例

int  main(){
   test(5);
   printf("end");
   return 0;
}
float test(int a) {
   return 1.1 ;
}

輸出

Error: C:\Users\mlath\test.c|12|error: conflicting types for 'test'

這是因為沒有原型的函式被假定為int型別,這與定義衝突。

如果原型中函式的返回型別與返回表示式的型別不匹配,也會發生相同的錯誤,如下所示:

float test(int);
int  main(){
   test(5);
   printf("end");
   return 0;
}
float test(float a){
   return 1.1 ;
}

使用return語句的多個返回值

一個函式可以定義多個引數,但只能返回一個值。但是,您可以使用多個條件返回語句,如下所示:

示例

int test(int);
int  main() {
   test(5);
   printf("end");
   return 0;
}

int test(int a){
   if (a<3)
      return 1;
   else
      return 0;
}

返回陣列的函式

無法將整個陣列作為引數返回給函式。但是,您可以透過指定陣列名稱而不帶索引來返回指向陣列的指標。

示例

下面的程式演示瞭如何將陣列傳遞給一個函式,該函式在執行某個過程後返回一個數組。

#include <stdio.h>
int* test(int *);
int  main(){
   int a[] = {1,2,3,4};
   int i;
   int *b = test(a);
   for (i=0; i<4; i++){
      printf("%d\n", b[i]);
   }
   return 0;
}
int * test(int*a){
   int i;
   for (i=0; i<4; i++){
      a[i] = 2*a[i];
   }
   return a;
}

輸出

2
4
6
8

函式只能使用return語句返回單個值。要返回多個值,我們使用指標或結構體。

使用exit()代替return語句

return語句不同,exit()函式也用於終止程式的執行,而無需將控制權返回給呼叫函式。當程式完成執行或發生不可恢復的錯誤時,它用於函式內部。這是在C語言中處理異常錯誤的標準方法。當呼叫exit()時,程式控制不會返回到呼叫exit()的地方。相反,控制權將交還給作業系統。

exit()函式是在stdlib.h標頭檔案中定義的庫函式。

語法

void exit(int status);

exit()通常從main()函式或任何其他函式呼叫以終止整個程式。

它包含在<stdlib.h>標頭檔案中。

由於它會導致程式終止,因此exit()不會直接返回值給呼叫函式。相反,它終止程式並返回一個狀態碼。這是一個整數,表示程式的退出狀態,指示成功或失敗。

廣告
© . All rights reserved.