int argc,char *ar**
agrc表示引數的個數
ar**儲存引數
這個函式的意思是逐一輸出引數
實際上,main函式也可以帶引數。帶引數main函式的定義格式如下:
void main(int argc, char *ar**)
argc和ar**是main函式的形式引數。這兩個形式引數的型別是系統規定的。如果main函式要帶引數,就是這兩個型別的引數;否則main函式就沒有引數。變數名稱argc和ar**是常規的名稱,當然也可以換成其他名稱。
那麼,實際引數是如何傳遞給main函式的argc和ar**的呢?我們知道,c程式在編譯和鏈結後,都生成乙個exe檔案,執行該exe檔案時,可以直接執行;也可以在命令列下帶引數執行,命令列執行的形式為:
可執行檔名稱 引數1 引數2 ... ... 引數n
可執行檔名稱和引數、引數之間均使用空格隔開。例如,我們在dos下執行copy c:\test.txt d:\test.txt,可執行檔名稱為copy,引數1為字串「c:\test.txt」,引數2為「d:\test.txt」。結果copy命令將c:\test.txt拷貝到d盤,目標檔案取為test.txt。
如果按照這種方法執行,命令列字串將作為實際引數傳遞給main函式。具體為:
(1) 可執行檔名稱和所有引數的個數之和傳遞給argc;
(2) 可執行檔名稱(包括路徑名稱)作為乙個字串,首位址被賦給ar**[0],引數1也作為乙個字串,首位址被賦給ar**[1],... ...依次類推。
例如,現在執行命令列(test是編譯後的exe檔名稱):
c:\tc\test how are you
那麼test工程的main函式引數argc=4;
ar**[0]將儲存字串"c:\tc\test"的首位址;
ar**[1]將儲存字串"how"的首位址;
ar**[2]將儲存字串"are"的首位址;
ar**[3]將儲存字串"you"的首位址;
下面的例子列印所有的ar**引數:
main(int argc, char *ar**)
}如果編譯後的exe檔名稱為test,在dos下執行c:\tc\test how are you,結果輸出:
total 4 arguments
argument 1 = c:\tc\test.exe
argument 2 = how
argument 3 = are
argument 4 = you
我們也可以在除錯狀態下輸入命令列引數,方法是:
在turboc的options選單下有乙個子選單arguments,選擇該項並確定,彈出輸入視窗;在輸入視窗鍵入命令列引數即可。比如要除錯上述的test,可以在輸入視窗鍵入how are you。在除錯過程中,可執行檔名稱和引數字串將被傳遞給main函式的形式引數。
在dos系統下,人們常常希望在執行exe的同時,傳遞一些有用的資訊。例如copy.exe,執行時將原始檔名稱和目的檔名稱作為引數傳入。利用指標陣列ar**作為main函式的形式引數,可以滿足這種需要。
main函式的引數解析
main函式的引數解析 我們平常寫main函式的時候習慣不帶引數,將其預設為void.但如果我們仔細觀察的話,我們就能發現其實main函式是有引數的。接下來,我們就來了解一下main函式的引數列表。首先main函式的原型為 int main int argc,char argv char envp ...
main函式的引數解析
我們一般寫 的時候都會這樣寫main函式 int main 所以剛開始我們都以為main函式是沒有引數的,然而事實卻不是這樣子的。首先,我們來看看main函式的原型 int main int argc,char argv,char envp 所以main函式是有引數的,而且有三個引數。第乙個引數 a...
Linux C程式設計 main函式引數解析
摘自 我們經常用的main函式都是不帶引數的。因此main 後的括號都是空括號。實際上,main函式可以帶引數,這個引數可以認為是 main函式的形式引數。語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv 語...