main函式的引數

2021-05-24 08:45:28 字數 2505 閱讀 5722

c程式最大的特點就是所有的程式都是用函式來裝配的。main()稱之為主函式,是所有程

序執行的入口。其餘函式分為有參或無參兩種,均由main()函式或其它一般函式呼叫,若呼叫

的是有參函式,則引數在呼叫時傳遞。

main()

f1(int a,int b)

f2(int m,int n)

在前面課程的學習中,對main()函式始終作為主調函式處理,也就是說,允許main()呼叫

其它函式並傳遞引數。事實上,main()函式既可以是無參函式,也可以是有參的函式。對於有

參的形式來說,就需要向其傳遞引數。但是其它任何函式均不能呼叫main()函式。當然也同樣

無法向main()函式傳遞,只能由程式之外傳遞而來。這個具體的問題怎樣解決呢?

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

main(argc,argv)

int argc,char *argv;

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

系統在啟動執行時傳遞引數了。

在作業系統環境下,一條完整的執行命令應包括兩部分:命令與相應的引數。其格式為:

命令引數1引數2....引數n¿

此格式也稱為命令列。命令列中的命令就是可執行檔案的檔名,其後所跟引數需用空格分隔,並為對命令的進一步補充,也即是傳遞給main()函式的引數。

命令列與main()函式的引數存在如下的關係:

設命令行為:program str1 str2 str3 str4 str5

其中program為檔名,也就是乙個由program.c經編譯、鏈結後生成的可執行檔案program.exe,其後各跟5個引數。對main()函式來說,它的引數argc記錄了命令列中命令與引數的個數,共6個,指標陣列的大小由引數argc的值決定,即為char*argv[6],指標陣列的取值情況如圖6-15所示。

陣列的各指標分別指向乙個字串。應當引起注意的是接收到的指標陣列的各指標是從命令列的開始接收的,首先接收到的是命令,其後

才是引數。

下面用例項來說明帶引數的main()函式的正確使用。

[例6-29] 利用圖形庫函式繪製乙個變化的環。它是把乙個半徑為r 1的圓周分成n份,然

後以每個等分點為圓心,以r s為半徑畫n個圓(關於作圖的詳細理論本教材第9章第1節作了專

門介紹,這裡只作簡單分析)。利用m a i n ( )函式的帶引數形式,我們可以從鍵盤以命令列的方

式輸入r 1和r s及螢幕的背景色。

#include /*包含圖形庫函式的標頭檔案* /

#include

#define pi 4.1415926

m a i n ( a r g c , a r g v )

int argc;char *argv; /* 定義帶引數的m a i n ( ) * /

getch();/*等待按鍵繼續*/

close graph();/*關閉圖形工作方式*/

}若程式名為l6-29.c,經編譯、鏈結生成可執行檔案l6-29.exe。在作業系統的環境下執行

程式,命令列方式為:

l6-29 40 20 3

則命令列與main()函式的引數有如圖6-16所示的關

系。圖6-16中,argv[0]是程式名,argv[1]是r1的值,

argv[2]是rs的值,argv[3]是螢幕的背景色。

由於指標陣列均存放字串,所需的圓半徑及背景

色彩通過atoi()函式轉換為整型。

通過帶引數的main()函式,我們可以為自己的程式設定口令,在執行程式的命令列中給出所需的口令,正確則繼續,否則退出。程式圖形輸出如圖6-17所示。

[例6-30]將上述程式作修改,在程式的入口處添置密碼,若給定密碼正確,則顯示圖

形。#include

#include

#define pi 4.1415926

m a i n ( a r g c , a r g v )

int argc;char *argv;

initgraph(&gdriver,&gmode,"..//bgi ");

r1=atoi(argv[2]);

rs=atoi(argv[3]);

color=atoi(argv[4]);

cleardevice();

setbkcolor(color);

setcolor(4);

for(a=0;a<=2*pi;a+=pi/18)

getch();

closegraph();

}在作業系統的環境下執行程式, 命令列中增加口令「p a s s」,命令列方式為:

l6-30 pass 20 40 3 

指標陣列的儲存字串如圖6-18所示。

若給定字串argv[1]的值是pass,則程式正確執行,否則程式退出。口令正確的情況下,顯示的圖形為圖6-17中的乙個。 

main函式的引數

main函式可以不帶引數,也可以帶引數,這個引數可以認為是 main函式的形式引數。c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv c語言還規定argc 第乙個形參 必須是整型變數,argv 第二個形參 ...

main函式的引數

main函式可以不帶引數,也可以帶引數,這個引數可以認為是 main函式的形式引數。c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv c語言還規定argc 第乙個形參 必須是整型變數,argv 第二個形參 ...

main函式引數

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