main函式引數

2021-09-25 07:04:10 字數 2626 閱讀 9718

argc是命令列總的引數個數

ar**是argc個引數,其中第0個引數是程式的全名,以後的引數命令列後面跟的使用者輸入的引數,比如:

int

main

(int argc,

char

* ar**)

char *ar**是乙個字元陣列,其大小是int argc,主要用於命令列引數 ar** 引數,陣列裡每個元素代表乙個引數;

比如你輸入

test a.c b.c t.c

則argc = 4

在呼叫乙個可執行程式時,某些情況下需要向程式傳遞引數。如我們可以在控制台中鍵notepad.exe,

回車後將執行記事本程式。如果我們希望在開啟notepad時同時開啟乙個文字檔案,可以在notepad.exe 後面跟上檔案的路徑和名字,如notepad.exe example.txt(檔案在當前路徑)。

那麼程式中如何能得到這些輸入引數呢?這個工作是編譯器幫我們完成的,編譯器將輸入引數的資訊

放入main函式的引數列表中。

main函式的引數列表儲存了輸入引數的資訊,第乙個引數argc記錄了輸入引數的個數,第二個引數是字串陣列的,字串陣列的每個單元是char*型別的,指向乙個c風格字串。

以notepad.exe example.txt為例

argc是2,就是說ar**陣列中有兩個有效單元

第一單元指向的字串是"notepad.exe"

第二單元指向的字串是"example.txt"

ar**陣列中的第乙個單元指向的字串總是可執行程式的名字,以後的單元指向的字串依次是程式呼叫時的引數。

int argc

這個東東用來表示你在命令列下輸入命令的時候,一共有多少個引數。比方說你的程式編譯後,可執行檔案是test.exe

d:/tc2>test

這個時候,argc的值是1

但是d:/tc2>test.exe myarg1 myarg2 的話,argc的值是3。也就是命令名加上兩個引數,一共三個引數

char *ar**

這個東東用來取得你所輸入的引數

d:/tc2>test

這個時候,argc的值是1,ar**[0]的值是 「test」

d:/tc2>test myarg1 myarg2

這個時候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。

這個東東一般用來為程式提供非常重要的資訊,如:資料檔名,等等。

如:copy a.c b.txt

這個時候,a.c和b.txt就是所謂的「非常重要的資訊」。不指定這兩個檔案,你沒法進行拷貝。

當你的程式用到argc和ar**這兩個引數的時候,可以簡單地通過判斷argc的值,來看看程式的引數是否符合要求

char *envp

這個東東相對來說用得比較少。它是用來取得系統的環境變數的。

如:在dos下,有乙個path變數。當你在dos提示符下輸入乙個命令(當然,這個命令不是dir一類的內部命令)的時候,dos會首先在當前目錄下找這個命令的執行檔案。如果找不到,則到path定義的路徑下去找,找到則執行,找不到返回bad command or file name

在dos命令提示符下鍵入set可檢視系統的環境變數

同樣,在unix或者linux下,也有系統環境變數,而且用得比dos要多。如常用的pat

h,

path,

path

,user,$home等等。

envp儲存所有的環境變數。其格式為(unix下)

path=/usr/bin;/local/bin;

home=/home/shuui

即:環境變數名=值

dos下大概也一樣。

環境變數一般用來為程式提供附加資訊。如,你做了乙個顯示文字的內容的程式。你想控制其一行中顯示的字元的個數。你可以自己定義乙個環境變數(unix下)

%setenv number = 10

%echo $number

10然後你可以在程式中讀入這個環境變數。然後根據其值決定一行輸出多少個字元。這樣,如果你不修改環境變數的話,你每次執行這個程式,一行中顯示的字元數都是不一樣的

下面是乙個例子程式

/* argtest.c */

#include

intmain

(int argc ,

char

*ar**,

char

*envp)

printf

("the follow is envp :/n");

for( i=0;

*envp[i]

!='/0'

; i++

)return0;

}

命令列引數啊。argc 是引數的個數,ar**是引數,ar**[0]是檔名,ar**[1]是第乙個引數…

如你得exe檔名是:myprog.exe,那麼

myprog 12 22 32

則ar**[0]=「myprog」,ar**[1]=「12」,ar**[2]=「22」…

exit()是程式退出時的返回碼。可以用其他程式接收,判斷是否正常退出。如exit(-1)認為異常退出。

main函式引數

函式的引數 前面介紹的main函式都是不帶引數的。因此main 後的括號都是空括號。實際上,main函式可以帶引數,這個引數可以認為是 main函式的形式引數。語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv...

main函式引數

習題1 main函式的引數 include include include int main int argc,char argv,char envp else if strcmp s argv 1 0 else if strcmp m argv 1 0 else if strcmp d argv ...

main函式的引數

c程式最大的特點就是所有的程式都是用函式來裝配的。main 稱之為主函式,是所有程 序執行的入口。其餘函式分為有參或無參兩種,均由main 函式或其它一般函式呼叫,若呼叫 的是有參函式,則引數在呼叫時傳遞。main f1 int a,int b f2 int m,int n 在前面課程的學習中,對m...