命令列引數
在託管環境(正常型別 - 而不是獨立環境)中執行的 AC 程式必須具有 main
功能。它傳統上定義為:
int main(int argc, char *argv[])
注意,argv
也可以,並且經常被定義為 char **argv
; 行為是一樣的。此外,引數名稱可以更改,因為它們只是函式中的區域性變數,但 argc
和 argv
是常規的,你應該使用這些名稱。
對於程式碼不使用任何引數的 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++中返回的內容, 以獲取標準中的完整引號。