C語言main 引數詳解

2021-07-22 09:17:19 字數 2029 閱讀 6744

main()函式既可以是無參函式,也可以是有參的函式。對於有參的形式來說,就需要向其傳遞引數。但是其它任何函式均不能呼叫main()函式。當然也同樣無法向main()函式傳遞,只能由程式之外傳遞而來。這個具體的問題怎樣解決呢?

我們先看一下main()函式的帶參的形式:

main(int argc,char *argv)

從函式引數的形式上看,包含乙個整型和乙個指標陣列。當乙個c的源程式經過編譯、鏈結後,會生成擴充套件名為.exe的可執行檔案,這是可以在作業系統下直接執行的檔案,換句話說,就是由系統來啟動執行的。對main()函式既然不能由其它函式呼叫和傳遞引數,就只能由系統在啟動執行時傳遞引數了;

在編譯連線好得到乙個可執行檔案test.exe後,將在系統執行這個可執行檔案時,將引數一起傳入,./test.exe a b c d

a b c d 分別為四個引數,其關係為 :

argc = 5

argv[0]=./test.exe

argv[1]=a

argv[2]=b

argv[3]=c

argv[4]=d

前面介紹的main函式都是不帶引數的。因此main 後的括號都是空括號。實際上,main函式可以帶引數,這個引數可以認為是 main函式的形式引數。c語言規定main函式的引數只能有兩個, 習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為: main (argc,argv)c語言還規定argc(第乙個形參)必須是整型變數,argv( 第二個形參)必須是指向字串的指標陣列。加上形參說明後,main函式的函式頭應寫為: 

main (argc,argv) 

int argv; 

char *argv;或寫成: 

main (int argc,char *argv) 

由於main函式不能被其它函式呼叫, 因此不可能在程式內部取得實際值。那麼,在何處把實參值賦予main函式的形參呢? 實際上,main函式的引數值是從作業系統命令列上獲得的。當我們要執行乙個可執行檔案時,在dos提示符下鍵入檔名,再輸入實際引數即可把這些實參傳送到main的形參中去。

dos提示符下命令列的一般形式為: c:\>可執行檔名 引數 引數……; 但是應該特別注意的是,main 的兩個形參和命令列中的引數在 

位置上不是一一對應的。因為,main的形參只有二個,而命令列中的引數個數原則上未加限制。argc引數表示了命令列中引數的個數(注意:檔名本身也算乙個引數),argc的值是在輸入命令行時由系統按實際引數的個數自動賦予的。例如有命令行為: c:\>e6 24 basic dbase fortran由於檔名e6 24本身也算乙個引數,所以共有4個引數,因此argc取得的值為4。argv引數是字串指標陣列,其各元素值為命令列中各字串(引數均按字串處理)的首位址。 指標陣列的長度即為引數個數。陣列元素初值由系統自動賦予。其表示如圖6.8所示: 

main(int argc,char *argv) 

本例是顯示命令列中輸入的引數如果上例的可執行檔名為e24.exe,存放在a驅動器的盤內。 

因此輸入的命令行為: c:\>a:e24 basic dbase fortran 

則執行結果為: 

basic 

dbase 

fortran 

該行共有4個引數,執行main時,argc的初值即為4。argv的4個元素分為4個字串的首位址。執行while語句,每迴圈一次 argv值減1,當argv等於1時停止迴圈,共迴圈三次, 因此共可輸出三個引數。在printf函式中,由於列印項*++argv是先加1再列印, 故第一次列印的是argv[1]所指的字串basic。第二、 三次迴圈分別列印後二個字串。而引數e24是檔名,不必輸出。

下例的命令列中有兩個引數,第二個引數20即為輸入的n值。在程式中*++argv的值為字串「20」,然後用函式"atoi"把它換為整型作為while語句中的迴圈控制變數,輸出20個偶數。 

#include"stdlib.h" 

main(int argc,char*argv) 

本程式是從0開始輸出n個偶數。指向指標的指標變數如果乙個指標變數存放的又是另乙個指標變數的位址, 則稱這個指標變數為指向指標的指標變數。

C語言main引數

簡介 argc main函式引數個數,當引數為void的時,argc 1,預設引數為可執行檔名 ar 指標陣列,分別指向個引數字串首位址,其中ar 0 指向預設引數 例項 int main int argc,char ar else if argc 2 else a.out testing the ...

詳解帶引數的C語言main函式

代引數的標準c函式 include intmain int argc,char ar char envp 引數詳解 argc 英文全稱為 arguments count,表示傳入引數的個數,因為個數是整數,所以屬於int型別,其中檔名屬於第乙個引數 ar 英文全稱為arguments value,表...

C語言main函式引數

c語言main函式引數 int main int argc char argv 或者是 int main int argc,char argv argc 命令列總的引數的個數 以空白符分隔 argv 字串指標陣列 陣列內存放指向char型別的指標 用來存放指向字串引數的指標陣列,每個元素指向乙個引數...