在c++的控制台程式開發過程中,很多人對與函數int main(int argc, char* argv[])不甚瞭解,經常會問一些基礎性的問題,剛開始以為只是個別的人不清楚,時間一長,發現不懂的人還是比較多的。當然對於這類情況,很多人選擇在DOS下運行,通過切換到目前的目錄,然後把參數來解決。其實這不是最好的辦法,而且每次調試和編譯都在DOS下進行,給程式開發帶來了諸多的不便,於是寫下這篇日記,希望能給那些不甚理解int main(int argc, char* argv[])函數的朋友一個解釋,能協助到你們不甚興奮。
首先,來分析這個函數int main(int argc, char* argv[]),該函數是控制台程式的入口程式,C語言規定main函數的參數只能有兩個,習慣上這兩個參數寫為argc和argv,C語言還規定argc(第一個形參)必須是整型變數,argv( 第二個形參)必須是指向字串的指標數組。其中argc表示的是main函數接受的參數的個數,argv是參數值。在DOS提示符下命令列的一般形式為: C:\>可執行檔名 參數 參數。 下面,我們來看一個執行個體,在c++中if( argc == 2 && (pImg = cvLoadImage( argv[1], 0)) != 0 )有這個一個判斷函數,其中的意思是什麼呢?其是判斷main函數傳進來的參數是不是兩個,然後從第二個參數argv[1](數組下標從0開始)給出的路徑載入一幅映像,並判斷是否成功。但是參數是怎麼傳進去的呢?很多人都不明白。繼續以VC6.0環境為例進行講解,Main函數的參數是通過“Project-Settings“跳出對話方塊: 圖中的"Executable for debug session:下面的參數”D:\VCProjects\UltiApp\Debug\UltiApp.exe“表示的就是在DOS提示符下命令列的一般形式為: C:\>可執行檔名,即為main函數傳進去的第一個參數argv[0],下面的”123.JPG“就是第二個參數argv[1](如果123.JPG不在目前的目錄下的話,就要用絕對路徑),也即為上面程式pImg = cvLoadImage( argv[1], 0)中傳給cvLoadImage的參數argv[1],如果main函數需要傳入更多的參數,那麼就在Program arguments中輸入多個參數,每個參數用空格隔開,如123.JPG 234.JPG等。