這種條件編譯形式與前面介紹的形式的唯一差異是第一行的ifdef改為ifndef.其意義是當(dāng)標(biāo)識(shí)符末被定義時(shí),程序段1參與編譯,程序段2不參與編譯;否則,反之。在上述形式中,當(dāng)程序段2不出現(xiàn)時(shí),可簡(jiǎn)寫成: # infdef 標(biāo)識(shí)符 程序段 # endif 9.4 帶參數(shù)的主函數(shù) 在操作系統(tǒng)下執(zhí)行某個(gè)C程序,是環(huán)境對(duì)C程序的啟動(dòng),可以看作是對(duì)該程序的main()函數(shù)的調(diào)用。main()函數(shù)執(zhí)行結(jié)束后,控制返回環(huán)境。為能從環(huán)境向C程序傳遞信息,啟動(dòng)C程序的命令行可帶有任選的參數(shù)。命令行的一般形式為 程序名 參數(shù)1 參數(shù)2……參數(shù)n 其中程序名和各參數(shù)之間用空白符分隔。 為能讓main()函數(shù)讀取命令行中的參數(shù),環(huán)境將多個(gè)參數(shù)以兩個(gè)參數(shù)形式傳遞給main()函數(shù)、其中第一個(gè)參數(shù)(習(xí)慣記作argc) 表示命令行中參數(shù)的個(gè)數(shù)(包括程序名);第二個(gè)參數(shù)(習(xí)慣記作argv)是一個(gè)字符指針數(shù)組。其中argv[0] 指向程序名字符串的第一個(gè)字符,argv[1]指向參數(shù)1字符串的第一個(gè)字符,…,argv[argc-1] 指向最后一個(gè)參數(shù)字符串的第一個(gè)字符。如果利因山等于1,則表示程序名后面沒有參數(shù)。下面的例子用于說明main()函數(shù)對(duì)參數(shù)argc 與argv的引用方法。 「例9.l」 回打啟動(dòng)程序時(shí)的命令行各參數(shù)。 # include<stdio.h> void main(int argc, char *argv[] /* 或char **argv; */) { int k; for( k=l; k<argc; k++) printf(“%c”,argv[k],k<argc-1?'':'\n' ); printf(“\n\n”); } 如上述程序的執(zhí)行程序名為echopro.exe,執(zhí)行該程序的命令行為: echopro Hello world! 則程序?qū)⑤敵?/p> Hello world! 在以上命令行中,根據(jù)約定,main()函數(shù)的參數(shù)argc的值為3;argv[0],argv[1],argv[2]分別指向字符串“echopro”、“Hello”、“world!”的第一個(gè)字符。在程序的printf()函數(shù)調(diào)用中,字符輸出格式%c輸出一個(gè)字符,若是已輸出了命令行最后一個(gè)參數(shù),該格式將輸出一個(gè)換行符,若是輸出其它參數(shù),則輸出一個(gè)空白符。 因函數(shù)的數(shù)組參數(shù)是指向數(shù)組首元素的指針變量,所以在主函數(shù)main()中可對(duì)argv施行增量運(yùn)算。例如,在argv[0]指針指向程序名字符串的第一個(gè)字符情況下,對(duì)argv施增量運(yùn)算++argv后,argv[0](或*argv)就指向參數(shù)1的第一個(gè)字符c利用argv的這一性質(zhì),可改寫上述程序?yàn)橐韵滦问剑?/p> # include<stdio.h> void main(int argc,char **argv) { while(——argc>0) printf(“%s%c”,*++argv,argc>1? '':'\n'); } 這里,++argv使指針argv先加1,讓它一開始就指向參數(shù)1;逐次增回,使它遍歷指向各參數(shù)。又利用函數(shù)printf()的第一個(gè)格式參數(shù)是字符串表達(dá)式,上述程序?qū)rintf()的調(diào)用可改寫成: printf((argc> l) ? “%s”:“%s\n”,* ++argv); 「例9.2」 假定啟動(dòng)程序時(shí)給出的命令行參數(shù)是一串整數(shù),程序?qū)⑷空麛?shù)求和后輸出。 # include<stdio.h> # include<math.h> void main( int argc,char **argv) { int k,s; for(s=0, k=l; k<argc; k++) s+=atoi(*++agv); /* 從數(shù)字字符串譯出整數(shù) */ printf( “\t%d\n”, s); } |
熱門資料下載: |
< |
自考最新熱貼: |
【責(zé)任編輯:育路編輯 糾錯(cuò)】 |
|
【育路網(wǎng)版權(quán)與免責(zé)聲明】 | |
① 凡本網(wǎng)注明稿件來源為"原創(chuàng)"的所有文字、圖片和音視頻稿件,版權(quán)均屬本網(wǎng)所有。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載、鏈接、轉(zhuǎn)貼或以其他方式復(fù)制發(fā)表時(shí)必須注明"稿件來源:育路網(wǎng)",違者本網(wǎng)將依法追究責(zé)任; | |
② 本網(wǎng)部分稿件來源于網(wǎng)絡(luò),任何單位或個(gè)人認(rèn)為育路網(wǎng)發(fā)布的內(nèi)容可能涉嫌侵犯其合法權(quán)益,應(yīng)該及時(shí)向育路網(wǎng)書面反饋,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)情況證明,育路網(wǎng)在收到上述法律文件后,將會(huì)盡快移除被控侵權(quán)內(nèi)容。 |
報(bào)考直通車 |
熱點(diǎn)專題 |
·重慶:2011年自考各專業(yè)課程考試安排表 |
·浙江:7月7.41萬人參加自學(xué)考試 |
·廣州:2010年10月自考報(bào)名通知 |
·同濟(jì)大學(xué):2010年上半年自考畢業(yè)證發(fā)放 |
·陜西:2011年自學(xué)考試共開考96個(gè)專業(yè) |
·山東:64所院校將進(jìn)行自考實(shí)踐課程試點(diǎn) |
·萬州區(qū):2010年10月自考報(bào)名時(shí)間通知 |
·北京:2010年建成自考標(biāo)準(zhǔn)化考點(diǎn)試點(diǎn) |
·江蘇(南京)2010年7月自考成績(jī)查詢 |
·湖北:2010年7月自考成績(jī)查詢 |
·北京:2010年7月自考首次全部實(shí)行網(wǎng)評(píng) |
·廣東中山2010年7月自學(xué)考試順利結(jié)束 |
·自考五種情況可以申請(qǐng)免考 |
·湖北:2010年10月自考(委托開考)(本科)教材大 |
·江蘇:2010年10月自考教材大綱表 |
·江蘇:2010年自考新聞學(xué)(本科)考試計(jì)劃 |
·江蘇:2010年自考機(jī)械制造及自動(dòng)化(獨(dú)立本科 |
·江蘇:2010年自考機(jī)械制造及自動(dòng)化(獨(dú)立本科 |
·北京:2010年10月計(jì)算機(jī)通信工程報(bào)考安排 |
·廣東:2010年7月自考使用計(jì)算器通知 |
·萬州區(qū):2010年10月自考報(bào)名時(shí)間通知 |
·寧波:2010年7月自考成績(jī)查詢時(shí)間 |
·北京:2010年10月自考通信信息管理報(bào)考安排 |
·北京:2010年3門證書課程補(bǔ)報(bào)名通知 |
·云南:2010年10月開考義務(wù)教育等專業(yè) |
·福建:2010年10月自考報(bào)考簡(jiǎn)章 |
·福建:2010年下半年自考實(shí)踐性環(huán)節(jié)考核時(shí)間安 |
·福建:2010年10月自考報(bào)名時(shí)間 |
·山西:2010年10月自考報(bào)考簡(jiǎn)章 |
·北京:2010年10月通信信息管理報(bào)考安排 |
誠(chéng)聘英才 | 廣告招商 | 關(guān)于網(wǎng)站 | 聯(lián)系我們 | 地方加盟 | 商務(wù)合作 | 投訴建議 | 老師加盟 | 客服中心 | 網(wǎng)站地圖 | 學(xué)校中心 |
學(xué)員報(bào)名服務(wù)中心: 北京北三環(huán)西路32號(hào)恒潤(rùn)中心18層1803室(交通位置圖) |
咨詢電話:北京- 010-51268840/41 傳真:010-51418040 上海- 021-51567016/17 |
本站法律顧問:邱清榮律師 |
1999-2010 育路教育版權(quán)所有| 京ICP證100429號(hào) |