main函數(shù)可以不帶參數(shù),也可以帶參數(shù),這個(gè)參數(shù)可以認(rèn)為是 main函數(shù)的形式參數(shù)。
創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都10余年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都千余家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。
C語(yǔ)言規(guī)定main函數(shù)的參數(shù)只能有兩個(gè),還規(guī)定argc(第一個(gè)形參)必須是整型變量,argv( 第二個(gè)形參)必須是指向字符串的指針數(shù)組。加上形參說(shuō)明后,main函數(shù)的函數(shù)頭應(yīng)寫(xiě)為:
int main (int argc,char *argv[])
由于main函數(shù)不能被其它函數(shù)調(diào)用,因此不可能在程序內(nèi)部取得實(shí)際值。那么,在何處把實(shí)參值賦予main函數(shù)的形參呢? 實(shí)際上,main函數(shù)的參數(shù)值是從操作系統(tǒng)命令行上獲得的。當(dāng)我們要運(yùn)行一個(gè)可執(zhí)行文件時(shí),在DOS提示符下鍵入文件名,再輸入實(shí)際參數(shù)即可把這些實(shí)參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\可執(zhí)行文件名 參數(shù) 參數(shù)……
使用二級(jí)指針
eg
#include?stdio.h
void?func(int?**p2p);
int?main(void)?
{
int?*p;
func(p);
printf("%d\n",*p);
return?0;
}
void?func(int?**p2p)
{
static?int?a=123;
*p2p=a;
}
有參數(shù),用于傳遞命令行位置參數(shù)到程序里.
例如:
輸入長(zhǎng)寬,計(jì)算矩型面積
void main(int argc,char *argv[]){
float area,w,h;
if (argc 3) {
printf("\007Usage:%s width height\n",argv[0]);
printf("for example:%s 12.3 4.5\n",argv[0]);
exit(0);
}
// 參數(shù)0 是程序名,argc參數(shù)個(gè)數(shù)
sscanf(argv[1],"%f",w); // 從參數(shù)1取得寬
sscanf(argv[2],"%f",h); // 從參數(shù)2取得高
area = w * h;
printf("area=%f\n",area);
exit(0);
}
命令行:
prog.exe 12.3 4.5
int main (int argc,char *argv[]) 或者 int main (int argc,char **argv)
其中第一個(gè)表示參數(shù)的個(gè)數(shù);第二個(gè)參數(shù)中argv[0]為自身運(yùn)行目錄路徑和程序名,argv[1]指向第一個(gè)參數(shù)、argv[2]指向第二個(gè)參數(shù)……
測(cè)試?yán)樱?/p>
#include stdio.h#include string.h
int main(int argc,char *argv[])
{
printf("argc= %d\n",argc);
while(argc--)
{
printf("%s \n",*argv++);
}
return 0;
}