C - 主函式



C 語言中的 main() 函式

C 語言中的 main() 函式是任何程式的入口點。程式執行從 main() 函式 開始。它旨在執行程式的主要處理並清理程式分配的任何資源。在 C 程式碼中,可能存在任意數量的函式,但必須有一個 main() 函式。無論它在程式碼中的位置如何,它都是第一個執行的函式。

語法

以下是 C 語言main() 函式的語法:

int main(){
   //one or more statements;
   return 0;
}

語法解釋

作為其語法的一部分,函式有一個名稱,該名稱遵循形成識別符號的規則(以字母或下劃線開頭,並且包含字母、數字或下劃線)。名稱後面跟著一個括號。通常,main() 函式定義為沒有引數,儘管它可能有 argv 和 argv 引數來接收來自命令列的值。

main() 函式的有效/不同簽名

main() 函式的簽名(原型)如下:

int main() {
   . .
   return 0;
}

或者

int main(void){
   . .
   return 0;
}

或者

int main(int argc, char *argv[]){
   . .
   return 0;
}

main() 函式示例

以下示例演示了 main() 函式

#include <stdio.h>

int main() {
  // Write code from here
  printf("Hello World");
  return 0;
}

關於 main() 函式的重要事項

  • C 程式必須具有 main() 函式。
  • main 不是 C 關鍵字
    它被歸類為 使用者定義函式,因為它的主體不是預先確定的,它取決於程式的處理邏輯。
    按照慣例,int 是 main() 的返回型別。main() 函式體中的最後一個語句返回 0,以指示函式已成功執行。任何非零返回值都表示失敗。
  • 一些舊的 C 編譯器允許您使用 void 返回型別定義 main() 函式。
  • 但是,這被認為是非標準的,不建議使用。
  • 與其他函式相比,main() 函式
    • 不能宣告為內聯。
    • 不能宣告為靜態。
    • 不能獲取其地址。
    • 不能從您的程式中呼叫。

main() 在 C 中是如何工作的?

程式的執行從 main() 函式開始,因為它是程式的入口點,它開始執行其內部編寫的語句。源程式中的其他函式被定義為執行某些任務。main 函式可以呼叫任何這些函式。當 main 呼叫另一個函式時,它將執行控制權傳遞給該函式,並選擇性地傳遞必要的引數數量和型別,以便執行從被呼叫函式中的第一個語句開始。當執行 return 語句或到達函式末尾時,被呼叫函式將控制權返回給 main。請注意,當其返回型別為 int 時,return 語句隱式地存在於最後一個語句中。

程式通常在從 main 返回或到達 main 的末尾時停止執行,儘管由於各種原因,它可能在程式中的其他點終止。例如,當檢測到某些錯誤條件時,您可能希望強制終止程式。為此,您可以使用 exit 函式。

在 main() 函式中使用 exit()

C exit() 函式 是一個標準庫函式,用於終止呼叫程序。使用 exit(0) 表示沒有錯誤,使用 exit(1) 表示程式由於遇到錯誤而退出。

示例

#include <stdio.h>
#include <stdlib.h>

int add(int, int);

int main (){
   int i;
   for ( i = 1; i<=5; i++){

      if ( i == 3 ){
         printf  (" \n exiting ..");
         exit(0);
      }
      else

      printf  (" \n Number is %d", i);
   }

   return 0;
}

輸出

Number is 1
Number is 2
exiting ..

帶 main() 的命令列引數

通常,main() 函式定義為沒有任何引數。但是,您可以使用引數定義 main() 以使其接受來自命令列的值。在這種型別的用法中,main() 函式定義如下:

語法

以下是帶有 命令列引數 的 main() 函式的語法

int main(int argc, char *argv[]){
   . . 
   return 0;
}

引數定義

引數定義如下:

argc - 第一個引數是一個整數,包含 argv 中後續引數的計數。argc 引數始終大於或等於 1。

argv - 第二個引數是一個以 null 結尾的字串陣列,表示使用者為程式輸入的命令列引數。按照慣例,argv[0] 是呼叫程式的命令。argv[1] 是第一個命令列引數。來自命令列的最後一個引數是 argv[argc - 1],而 argv[argc] 始終為 NULL。

示例:使用帶命令列引數的 main() 函式

考慮以下程式以瞭解命令列引數。

#include <stdio.h>
#include <stdlib.h>

int add(int, int);

int main (int argc, char *argv[]){
   int x, y, z;

   if (argc<3){
      printf("insufficient arguments");
   }
   else{
      x = atoi(argv[1]);
      y = atoi(argv[2]);
      z = x+y;
      printf("addition : %d", z);
   }
   return 0;
}

只需編譯並構建程式為 test.c,不要從您編輯和編譯的 IDE 中執行。轉到命令提示符並按如下方式執行程式:

C:\Users\mlath>test 10 20
addition : 30

在本章中,我們學習了在 C 中定義 main() 函式的重要性及其語法。任何 C 程式都必須具有 main() 函式。按照慣例,它應該返回 0 以指示執行成功。您還可以為 main() 函式定義引數,它們可以從命令列傳遞。

廣告