main函式引數解析

2021-09-09 02:09:30 字數 1529 閱讀 1938

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 語...