main函式的引數的含義

2021-08-19 07:10:47 字數 2785 閱讀 5079

鏈結2

最近學習伺服器網路程式設計,遇到了乙個問題,main函式的引數,特意整理資料記錄之!!!

下面是乙個帶引數的main函式!

#include 

int main(int argc,char *argv)

return0;}/*

int argc, char **argv 用於執行時,把命令列引數傳入主程式。

argc -- 命令列引數總個數,包括 可執行程式名。

argv[i] -- 第 i 個引數。

argv[0] -- 可執行程式名。

*/

關於帶引數的main函式網路收集:

int main(int argc,char **argv)這裡面的**argv含義··

是用來傳遞引數的,假如你編譯成的檔名是a.exe,那麼在命令提示符下可以通過a.exe12 34來向程式傳遞引數,這時兩個引數就會傳遞到字串陣列argv中,注意此時實際傳遞了三個引數,第乙個引數是檔名,第二個引數是12,第三個是34,而argc就是引數個數。

int argc, char **argv 用於執行時,把命令列引數傳入主程式。

argc -- 命令列引數 總個數,包括 可執行程式名。

argv[i] -- 第 i 個引數。

argv[0] -- 可執行程式名。

// 例如執行:

abc.exe

argc 等於 1, argv[0] 是 "abc.exe"

// 例如執行:

rec.exe 4 5.2

argc 等於 3, argv[0] 是 "rec.exe", argv[1] 是 "4", argv[2] 是 "5.2".

主函式裡若有:

int x;

float y;

char s[80];

strcpy(s,argv[0]); // 程式名存入 了 s

sscanf(argv[1],"%d",&x); // x 得到數值4

sscanf(argv[2],"%f",&y); // y 得到數值 5.2

蒐集了一下c和c++中常見的幾種形式:

(1) main() 

(2) int main()

(3) int main(void)

(4) int main(int, char**)

(5) int main(int, char*)

(6) int main(int argc, char **argv)

(7) int main(int argc, char *argv)

(8) int main( int argc, char *argv, char*envp)

(9) void main(void)

(1)是(3)的簡寫。不推薦使用。

(2)是(3)的簡寫。在c++中是正確的形式。

(3)在c和c++中都是正確的形式。推薦使用。(還有預設int的main(void)形式)。

(4)和(5)是不用引數時的一種寫法。編譯器級別高時會警告。不推薦使用。

(6)是(7)的另外寫法。兩種都可以,憑個人愛好。

(7)是帶引數的正確的形式。推薦使用。

(8)是一種很少用的寫法,且受系統限制。

(9)一般不認為是正確的寫法。但是在嵌入式系統中有使用(包括void main()形式)

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

dos提示符下命令列的一般形式為:

c:\>可執行檔名  引數  引數……;
但是應該特別注意的是,main 的兩個形參和命令列中的引數在位置上不是一一對應的。因為,main的形參只有二個,而命令列中的引數個數原則上未加限制。argc引數表示了命令列中引數的個數(注意:檔名本身也算乙個引數),argc的值是在輸入命令行時由系統按實際引數的個數自動賦予的。

例如有命令行為:

c:\>e24  basic  foxpro  fortran
argv引數是字串指標陣列,其各元素值為命令列中各字串(引數均按字串處理)的首位址。 指標陣列的長度即為引數個數。陣列元素初值由系統自動賦予。其表示如圖所示:

再例如執行下面的程式:

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

c:>a:lyy basic foxpro fortran

main(int argc,char *argv)
則執行結果為:

basic

foxpro

fortran

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

二、三次迴圈分別列印後二個字串。而引數lyy是檔名,不必輸出。

C命令列引數 main函式的引數含義

c中的命令列引數 又叫位置引數,它可以被傳到程式裡面,派各種用途 我們先來看main函式的引數 int main intargc,char argv char envp main 函式的引數就是通過命令列來進行傳參的 vs2013傳參方式 專案 屬性 配置屬性 除錯 命令列引數,然後進行傳參。arg...

C語言main函式的引數含義及輸入

2012 04 06 17 23 22 分類 c c 舉報 字型大小訂閱 問題重現 c語言main函式有兩個引數,怎麼在vc6.0下給main函式傳遞引數,以及各引數的意義。帶有引數的main 函式頭格式為 void main int argc,char argv 或void main int ar...

main函式的引數

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