main函数的参数argc和argv
一.main()函數參數
通常我們在寫主函數時都是void main()或int main() {..return 0;},但ANSI-C(美國國家標準協會,C的第一個標準ANSI發布)在C89/C99中main()函數主要形式為:
(1).int main(void)
(2).int main(int argc,char *argv[]) = int main(int argc,char **argv).
其參數argc和argv用于運行時,把命令行參數傳入主程序.其中ARG是指arguments,即參數.具體含義如下:
(參照Arguments to main和C++ Primer7.2.6節)
(1).int argc:英文名為arguments count(參數計數)
count of cmd line args,運行程序傳送給main函數的命令行參數總個數,包括可執行程序名,其中當argc=1時表示只有一個程序名稱,此時存儲在argv[0]中.
(2).char **argv:英文名為arguments value/vector(參數值)
pointer to table of cmd line args,字符串數組,用來存放指向字符串參數的指針數組,每個元素指向一個參數,空格分隔參數,其長度為argc.數組下標從0開始,argv[argc]=NULL.
argv[0] 指向程序運行時的全路徑名
argv[1] 指向程序在DOS命令中執行程序名后的第一個字符串
argv[2] 指向執行程序名后的第二個字符串
argv[argc] 為NULL.
二.源代碼中的argc與argv
由于C程序必須有main()函數為入口,而且它不能被其他函數調用(可以調用自身),因此不能再程序內部取得實際值.那么在何處把實參賦值給main函數的形參呢?這就需要調用"運行"或"DOS提示符",在調用可執行程序exe時,編譯器會幫助我們將輸入參數的信息放入main函數的參數列表中傳參.
1.計算命令行參數個數程序如下:
調用"運行"(快捷鍵Ctrl+R)或"cmd"輸入"G:\test.exe"會輸出"參數個數=1",此時存儲的就是執行程序名.輸入"G:\test.exe 2 hello good"輸出"參數個數=4":
2.查看argv[]二維數組存儲具體字符串的代碼如下:
"運行"中輸入"G:\test.exe 2 hello good",則輸出入下圖所示:
其中argv[0]指向字符串可執行程序的名稱G盤下的test.exe,通常會位于"項目名稱\Debut\xxx.exe"中.后面argv[1..3]單元依次指向程序調用時的參數.
三.調用argc和argv
在"運行"中輸入"notepad.exe"回車能執行記事本程序(位于C:\Windows\System32),如果輸入"notepad.exe test.txt"可以打開test.txt文本文件,其中test.txt位于當前路徑下.如下圖所示:
為什么我要講述這個例子呢?主要是說明參數與exe之間的關系,main()函數其實與之也類似.同時在使用文件知識時,我們通常會涉及到main函數的argc和argv參數.如在《C++ Primer》這本書中第10.3.9實現單詞轉換的例子就涉及到該運用,這里只講述涉及到該參數的部分代碼供大家參考,大家可以自己去學習了解:
其中具體操作是通過map(鍵-值對的集合)對象來實現,推薦大家看看這本最經典的C++書籍. 轉載于“https://blog.csdn.net/Eastmount/article/details/20413773”
總結
以上是生活随笔為你收集整理的main函数的参数argc和argv的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机缓存Cache机制理解
- 下一篇: 常用window cmd命令