命令列引數

託管環境(正常型別 - 而不是獨立環境)中執行的 AC 程式必須具有 main 功能。它傳統上定義為:

int main(int argc, char *argv[])

注意,argv 也可以,並且經常被定義為 char **argv; 行為是一樣的。此外,引數名稱可以更改,因為它們只是函式中的區域性變數,但 argcargv 是常規的,你應該使用這些名稱。

對於程式碼不使用任何引數的 main 函式,請使用 int main(void)

程式啟動時會初始化這兩個引數:

  • argc 初始化為從命令列給予程式的空格分隔引數的數量以及程式名稱本身。
  • argv 是一個 char 指標(字串)陣列,包含在命令列中給出的引數(和程式名稱)。
  • 有些系統會在“shell 中”擴充套件命令列引數,而有些則不會。在 Unix 上,如果使用者輸入 myprogram *.txt,程式將收到一個文字檔案列表; 在 Windows 上,它將收到字串“*.txt”。

注意:在使用 argv 之前,你可能需要檢查 argc 的值。從理論上講,argc 可能是 0,如果 argc 為零,則沒有引數,argv[0](相當於 argv[argc])是一個空指標。如果你遇到此問題,這將是一個具有託管環境的異常系統。同樣,雖然很不尋常,但是沒有關於程式名稱的資訊是可能的。在這種情況下,argv[0][0] == '\0' - 程式名稱可能為空。

假設我們像這樣啟動程式:

./some_program abba banana mamajam

然後 argc 等於 4 和命令列引數:

  • argv[0] 指向 ./some_program(程式名稱),如果程式名稱可從主機環境獲得。否則一個空字串 ""
  • argv[1] 指向 abba
  • argv[2] 指向 banana
  • argv[3] 指向 mamajam
  • argv[4] 包含值 NULL

另請參閱 main() 在 C 和 C++中返回的內容, 以獲取標準中的完整引號。