int main(int argc, char **argv)

關於 C/C++ 入口函數 main() 的參數,「int argc / char **argv」,銘看過的入門書剛開始都選擇跳過解釋這兩個參數,個人猜測是因為還沒有講到 function 概念,所以沒有講,今天看 Windows API 的 example 的時候,發現書上的 example 使用了很大量的 int argc / char **argv,當時在火車上其實我有點納悶這兩個參數,我知道這是一些 IDE 會自行加入的參數,不過沒有太多印象,手邊也沒有網路,只能透過 example 大概知道是再命令列中的附加參數讀取。

到了租屋處後,找了一下資料,初步了解 argc / argv 兩個參數的用途,簡單的說就是可以在外部命令列中加入附加的參數,並且透由 argc / argv 協作讀取使用者填寫的參數。

  • int argc // 附加參數數量(同時也是 argv 的大小)

例如有一個程式 shutdown.exe,我在命令列中輸入:

  • shutdown.exe -r -t 0

argc 的值會是:4

  • char **argv(char ^argv) // 紀錄各個參數。

argv 的大小 = 使用者輸入的參數數目大小。

可以透過:

  • argv[i]

方式讀入命令列輸入的參數,延續上面的例子

example.cpp
1
2
3
4
5

cout « argv[0]; // 輸出:shutdown.exe
cout « argv[1]; // 輸出:-r
cout « argv[2]; // 輸出:-t
cout « argv[3]; // 輸出:-0

如果要讀取使用者所有輸入的參數可以:

example.cpp
1
2
3
4
5

for(int i = 0;i < argc;i++)
{
cout « argv[i] « endl;
}

即可讀到命令列所送進的所有參數。

reference