【C/C++】main函数之参数argc和argv含义及用法
初識argc和argv,對其用法甚是困惑,偶得大神“-牧野-”之總結,猶如醍醐灌頂,故轉載分享如下,供更多博友學習。
argc 是 argument count的縮寫,表示傳入main函數的參數個數;argv 是 argument vector的縮寫,表示傳入main函數的參數序列或指針。第一個參數argv[0]一定是程序的名稱,并且包含了程序所在的完整路徑,所以確切的說需要我們輸入的main函數的參數個數應該是argc-1個。
簡單用法示例,新建工程鍵代碼:
#include <iostream> using namespace std; void main(int argc,char *argv[]) {for(int i=0;i<argc;i++){cout<<"argument["<<i<<"] is: "<<argv[i]<<endl;}system("pause"); }argv是指向指針的指針,main函數的第二個參數“char *argv[]“也可以替換為 “char **argv“,兩者是等價的。
在編譯環境下按F5運行,輸出如下:
?
可見,在沒有參數傳入的情況下,保存程序名稱的第一個變量argv[0]依然存在。
傳參數給main函數有兩種方法,第一種方式是在編譯環境中設置,以vs2012為例,右擊項目—>屬性—>配置屬性—>調試—>命令參數,在命令參數中輸入,每個參數之間用空格隔開。
?
之后點擊確定并應用,運行之后顯示如下:
?
第二種方式也是經常會用到的方式是通過命令提示符傳入。首先需要打開命令提示符窗口,點擊開始菜單在“搜索程序和文件”里輸入命令“cmd”或者直接按快捷鍵 Windows+R,在彈出的對話框里輸入“cmd”即可打開命令提示符窗口:
?
打開命令提示符窗口后需要輸入生成的exe文件所在的完整路徑,一個簡便的方法是把exe文件直接拖入提示符窗口即可,之后輸入傳入參數,以空格分隔,之后回車,顯示如下:
如果你堅持要手工輸入完整路徑的話,你會發現等你“Ctrl+C”路徑后,在提示符窗口中按“Ctrl+V”卻不能粘貼,這時候可以在窗口中右鍵單擊一下試試,你會發現右鍵菜單里的粘貼功能還是有效的。
下一個例子演示使用opencv顯示一幅圖片:
#include <iostream> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace std; using namespace cv;void main(int argc,char **argv) {Mat image=imread(argv[1]);imshow("Lena",image);waitKey(); }注意讀入的參數是argv[1],在命令提示符窗口運行:
?
最后說明一下:一般編譯器默認使用argc和argv兩個名稱作為main函數的參數,但這兩個參數如此命名并不是必須的,你可以使用任何符合C++語言命名規范的變量名作為入參,效果是一樣的:
#include <iostream> #include <core/core.hpp> #include <highgui/highgui.hpp>using namespace std; using namespace cv;void main(int value,char **point) {for(int i=0;i<value;i++){cout<<"argument["<<i<<"] is: "<<point[i]<<endl;}system("pause"); }轉自:https://blog.csdn.net/dcrmg/article/details/51987413
總結
以上是生活随笔為你收集整理的【C/C++】main函数之参数argc和argv含义及用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCv】Cannot paral
- 下一篇: 【C++】欧几里德算法快速求最大公约数