乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      帶參數(shù)的主函數(shù)2

       Eva.zhou 2011-01-19
      9.4 帶參數(shù)的主函數(shù)

        C語(yǔ)言規(guī)定,主函數(shù)也可以帶參數(shù),就像我們編寫(xiě)的用戶函數(shù)一樣,可以帶參數(shù),也可以不帶參數(shù)。主函數(shù)的形式參數(shù)只有兩個(gè):一個(gè)形式參數(shù)是記錄了參數(shù)的個(gè)數(shù),這是一個(gè)整型的形式參數(shù),其名稱規(guī)定為“argc”;第二個(gè)形式參數(shù)依次記錄了在調(diào)用該主函數(shù)(即執(zhí)行程序)時(shí)給出的實(shí)際參數(shù)內(nèi)容(字符串),這個(gè)形式參數(shù)是一個(gè)字符指針型數(shù)組,每個(gè)元素指向一個(gè)實(shí)際參數(shù)對(duì)應(yīng)的字符串,第二個(gè)形式參數(shù)名稱規(guī)定為“argv[]”。

        帶參數(shù)的主函數(shù)在定義時(shí),其函數(shù)頭的定義規(guī)定如下:
          main(argc,argv)
          int argc; /*第1個(gè)形式參數(shù):整型*/
          char *argv[]; /*第2個(gè)形式參數(shù):字符指針型數(shù)組*/
        如果主函數(shù)不帶參數(shù),執(zhí)行目標(biāo)程序時(shí)只要按下列格式輸入程序名就可以了:
          程序名↙ (其中的↙表示回車(chē),下同)
        我們通常把在操作系統(tǒng)下按上述格式執(zhí)行目標(biāo)程序時(shí),輸入的一行稱為“命令行”。
        若主函數(shù)帶參數(shù),則執(zhí)行目標(biāo)程序時(shí),應(yīng)按下列格式給出相應(yīng)的實(shí)際參數(shù):
          程序名 實(shí)際參數(shù)1 實(shí)際參數(shù)2 … 實(shí)際參數(shù)n↙
        上述格式也是一個(gè)命令行。
        此時(shí),系統(tǒng)會(huì)自動(dòng)在內(nèi)存開(kāi)辟區(qū)域依次存放程序名和所有的實(shí)際參數(shù),同時(shí)給主函數(shù)的形式參數(shù)賦值,結(jié)果如下:
          形參argc 賦值為n+1,表示連同程序名在內(nèi)共有n+1個(gè)參數(shù)。
          形參argv[0]賦值為存放“程序名”字符串的首地址;
          argv[1]賦值為存放“實(shí)際參數(shù)1”字符串的首地址;
              .
              .
              .
          argv[n]賦值為存放“實(shí)際參數(shù)n”字符串的首地址。

        例如,有一個(gè)名為“my_copy.c”的程序,其主函數(shù)帶有參數(shù)。如果在執(zhí)行時(shí),輸入的命令行如下:my_copy a:\ccw1.txt b:\ccw2.txt↙
        則形式參數(shù)的值如下:
          argc=3
          argv[0]指向字符串 "my_copy"
          argv[1]指向字符串 "a:\ccw1.txt"
          argv[2]指向字符串 "a:\ccw2.txt"
        在程序中可以通過(guò)形式參數(shù)獲得相應(yīng)的實(shí)際參數(shù),參與程序的運(yùn)算和加工。

        【例9-8】編一個(gè)帶參數(shù)的主函數(shù)。運(yùn)行時(shí),在程序名后帶有2個(gè)整數(shù),程序的功能是輸出這2個(gè)整數(shù)的和。

        程序清單如下:

          #include "stdlib.h" /*程序中用到數(shù)據(jù)轉(zhuǎn)換類(lèi)函數(shù)*/
          main(argc,argv)
          int argc;
          char *argv[];
          { int x,y,sum;
          x=atoi(argv[1]); /*將第1個(gè)實(shí)際參數(shù)對(duì)應(yīng)的字符串轉(zhuǎn)換成整數(shù)存入x*/
          y=atoi(argv[2]); /*將第2個(gè)實(shí)際參數(shù)對(duì)應(yīng)的字符串轉(zhuǎn)換成整數(shù)存入y*/
          sum=x+y;
          printf("%d+%d=%d\n",x,y,sum);
          }

        假定本程序編譯后的目標(biāo)程序名為"test1.exe",執(zhí)行該程序時(shí)輸入的命令行如下:

            test1 5 10↙

        則程序運(yùn)行后的輸出結(jié)果為:5+10=15。

        【例9-9】編一個(gè)程序,完成磁盤(pán)文件復(fù)制。源文件名和目標(biāo)文件名隨程序運(yùn)行時(shí)輸入。例如,復(fù)制a盤(pán)根目錄下的文件ccw1.txt為a盤(pán)根目錄下的ccw2.txt,則執(zhí)行程序時(shí)輸入的命令行如下:程序名 a:\ccw1.txt a:\ccw2.txt↙。

        程序清單如下:

          #include "stdio.h" /*程序中用到文件處理類(lèi)函數(shù)*/
          main(int argc,char *argv[])
          { FILE *fp1,*fp2;
          if ((fp1=fopen(argv[1],"rb"))==NULL)
            { printf(“"file can not open!\n");
            exit(0);
          } /*以只讀方式打開(kāi)argv[1]指向的源文件名對(duì)應(yīng)的二進(jìn)制文件*/
          if ((fp2=fopen(argv[2],"wb"))==NULL)
            { printf("file can not open!\n");
            exit(0);
          } /*以只寫(xiě)方式打開(kāi)argv[2]指向的目標(biāo)文件名對(duì)應(yīng)的二進(jìn)制文件*/
          while(!feof(fp1)) /*復(fù)制源文件到目標(biāo)文件*/
            fputc(fgetc(fp1),fp2);
          fclose(fp1); /*關(guān)閉fp1所指向的源文件*/
          fclose(fp2); /*關(guān)閉fp2所指向的目標(biāo)文件*/
          }

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多