main (int argc,char *argv[]) 解析

C語言剛開始的學習中,我們知道main函數是程序的入口函數,每次程序執行都是從main函數開始,一般對於初學者,書上會用這樣的框架讓你書寫程序:
int main()
{
         return 0;
}
上邊的框架沒有任何問題,對於初學者來說更是不錯的選擇。但是等你看其它的參考資料的時候,你會發現很多書上的main函數都會帶有參數:main (int argc,char *argv[])
這看上去確實很奇怪,不過等你學完函數的知識,你會發現main函數也沒有什麼。簡單的來說就是帶有兩個參數,第一個參數是一個整形變量,第二個參數是一個指向字符串的指針數組。唯一可能會讓人感覺疑惑的就是程序運行,誰來調用它們?答案很簡單:操作系統來調用,並給它們賦值。
現在的操作系統都是圖形化的,參數的調用基本都隱藏起來,不過可以藉助DOS來理解:
在DOS操作系統中輸入這樣的命令:C:>可執行文件名 參數參數……; 
操作系統調用C語言的程序也是這樣調用的。第一個參數argc代表命令中參數的個數,文件名也算上。argv就是存儲這些參數的。爲了驗證結果的真實性,我寫了一個示例程序將參數argv的結果輸出:
程序:
 
 
 
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[])
{
         for(int i=0; i<argc; i++)
         {
                   cout<<argv[i]<<endl;
         }
         return 0;
}
 
 
將程序結果放入D盤,進入windows控制檯,用命令運行該程序,結果如圖:




 
我一共輸入四個參數,算上程序名,剛好5個。也就是說在運行test.exe程序的時候,操作系統調用test的主函數main,並對其賦值。第一個參數argc的數值爲五,第二參數agrv相當於二維數組,每一行存一個參數,共五行。大家可以試試!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章