main函數的參數


  在一些教材中,我們常常可以看到main函數的形式如下:int main(int argc,char* argv[]),這兩個參數是干什么的呢?如何傳遞給main函數呢?

1.含義

  首先必須知道,main函數是由系統調用的,在調用的同時傳遞參數。

  例如,在文件file1.c中,有如下內容:

#include <stdio.h>

int main(int argc,char* argv[])

{

         printf("exe executed!\n");

}

經過編譯后,在工程目錄的debug文件夾下,可以得到“file1.exe”文件,我們要在DOS下執行這個文件,就要以一定的格式輸入命令行,格式如下:

         命令名  參數1,參數2,……參數n

比如,要執行上述exe文件,可以輸入:

     file1 

可以得到以下結果:

如果我們要傳遞參數,則可以輸入以下內容:

         file1 China BeiJing

現在,我告訴您:

  argc的含義是argument count:它是一個int行變量,表示傳遞給main函數的參數數量;

  argv的含義是argument value(值):它是一個指向字符串的指針數組,每個指針元素指向各個具體的參數;

您可以猜到argc的值和argv的值是多少了么?

argc=3,而不是2,因為命令名“file1”也算一個參數!因此從此處也可以知道,argc是恆>=1的。

而argv呢?看下圖:

2.用法

  既然知道了各個參數的含義,那么如何使用該參數呢?看了下面這個簡單的程序您就會明白:

#include <stdio.h>
int main(int argc,char* argv[])
{
    while(argc>0)
    {
        argc--;
        printf("%s\n",*argv);
        argv++;   /*指向下一條參數*/
    }
}

調用方法和運行結果:

懂了吧?實際上,這兩個變量的名字 實際上可以隨便取的,取坐argc和argv只不過是習慣而已。

 

P.S:

  為什么第二個形參參數要用指針數組?

  由於命令行中的字符串的長度事先並不知道,而且各個參數字符串的長度一般也並不相同,因此只有用指針數組能夠比較好地滿足上述要求,可以從這里體會指針數組的用處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM