c和C++main函式中引數的意義和用法
阿新 • • 發佈:2018-11-08
main函式是C++的主函式,除了程式本身外,任何函式都不可以呼叫main函式。main函式中可以新增引數,也可以不寫。main函式預設有兩個引數,main(int argc, char ** argv),其中,argc是用來表面main函式究竟呼叫了幾個引數,因為程式本身的檔名就是一個引數,所以argc總是>=1。如果除了程式本身外,你還規定了其它的一些引數,例如在vs裡面進行除錯時,輸入了引數”1.jpg”,則argv[1] = “1.jpg”.也就是說,你輸入了幾個引數,總的引數個數就是你輸入的引數個數再加1。
例如如下程式碼:
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
if (argc != 2)
{
cout << "Error" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR);
if (!image.data)
{
cout << "Error1" << endl;
return -1;
}
cout << "argc = " << argc << endl;
cout << "argv[0] = " << argv[0] << endl;
cout << "argv[1] = " << argv[1] << endl;
namedWindow("Display Window" ,CV_WINDOW_AUTOSIZE);
imshow("Display Window",image);
waitKey(0);
return 0;
}
專案的屬性頁,除錯選項中有個命令引數選項,裡面你就可以寫入一些引數,例如我寫入了“2.jpg”,那麼程式執行的結果就是
argc = 2
argv[0] = E:\VS2010\opencv\Debug\opencv.exe
argv[1] = 2.jpg
而且,我如果寫入引數 35 “2.jpg”,(需要首先將第一個if判斷句註釋掉,因為此時引數的總個數為3),那麼程式執行結果就是
argc = 2
argv[0] = E:\VS2010\opencv\Debug\opencv.exe
argv[1] = 35
而argv[2] = 2.jpg