C/C++基礎:main函數的參數argc和argv


轉載:

https://blog.csdn.net/Eastmount/article/details/20413773

一.main()函數參數

通常我們在寫主函數時都是void main()或int main() {..return 0;},但ANSI-C(美國國家標准協會,C的第一個標准ANSI發布)在C89/C99中main()函數主要形式為:
(1).int main(void)
(2).int main(int argc,char *argv[]) = int main(int argc,char **argv).
其參數argc和argv用於運行時,把命令行參數傳入主程序.其中ARG是指arguments,即參數.具體含義如下:
(參照Arguments to main和C++ Primer7.2.6節)
(1).int argc:英文名為arguments count(參數計數)
count of cmd line args,運行程序傳送給main函數的命令行參數總個數,包括可執行程序名,其中當argc=1時表示只有一個程序名稱,此時存儲在argv[0]中.
(2).char **argv:英文名為arguments value/vector(參數值)
pointer to table of cmd line args,字符串數組,用來存放指向字符串參數的指針數組,每個元素指向一個參數,空格分隔參數,其長度為argc.數組下標從0開始,argv[argc]=NULL.
argv[0] 指向程序運行時的全路徑名
argv[1] 指向程序在DOS命令中執行程序名后的第一個字符串
argv[2] 指向執行程序名后的第二個字符串
argv[argc] 為NULL.

例如:

#include <stdio.h>
#include <stdlib.h>

// 聲明
double getArea(r, PI);

int main(int argc,char *args[]){
    double r = 0;
    double Area = 0;
    double PI = atof(args[1]);
    printf("當前PI值為:%f\n", PI);
    printf("輸入半徑R:");
    scanf("%lf", &r);
    Area = getArea(r, PI);
    printf("面積為:%f\n", Area);
    return 0;
}

// 計算面積
double getArea(double r, double PI){
    double area = 0;
    area = PI * r * r;
    return area;
}

二.源代碼中的argc與argv

由於C程序必須有main()函數為入口,而且它不能被其他函數調用(可以調用自身),因此不能再程序內部取得實際值.那么在何處把實參賦值給main函數的形參呢?這就需要調用"運行"或"DOS提示符",在調用可執行程序exe時,編譯器會幫助我們將輸入參數的信息放入main函數的參數列表中傳參.


免責聲明!

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



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