main函數的參數(一)

來源:互聯網
上載者:User

C程式最大的特點就是所有的程式都是用函數來裝配的。main()稱之為主函數,是所有程
序啟動並執行入口。其餘函數分為有參或無參兩種,均由main()函數或其它一般函數調用,若調用
的是有參函數,則參數在調用時傳遞。
main()
{
...
y1=f1(x1,x2);
...
}
f1(int a,int b)
{
....
Y2=f2(x3,x4);
....
}
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 <graphics.h> /*包含圖形庫函數的標頭檔* /
#include <math.h>
#define pi 4.1415926
m a i n ( a r g c , a r g v )
int argc;char *argv[]; /* 定義帶參數的m a i n ( ) * /
{
int x,y,r1,rs,color;
double a;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"..\\bgi ")啟;/動*圖形工作方式*/
r1=atoi(argv[1]);/*計算基礎圓半徑*/
rs=atoi(argv[2]);/*計算同心圓半徑*/
color=atoi(argv[3]);/*背景色*/
cleardevice();/*清除圖形螢幕*/
setbkcolor(color);/*設定背景色*/
setcolor(4);/*設定圖形顯示顏色*/
for(a=0;a<=2*pi;a+=pi/18)/*繪製同心圓*/
{
x=r1*cos(a)+320;
y=r1*sin(a)+240;
circle(x,y,rs);/*以圓心座標為x、y,半徑為rs畫圓*/
}
getch();/*等待按鍵繼續*/
close graph();/*關閉圖形工作方式*/
}
若程式名為L6-29.c,經編譯、連結產生可執行檔L6-29.exe。在作業系統的環境下運行
程式,命令列方式為:
l6-29 40 20 3
則命令列與main()函數的參數有如圖6-16所示的關
系。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。