C程序最大的特點就是所有的程序都是用函數來裝配的。main()稱之為主函數,是所有程
序運行的入口。其余函數分為有參或無參兩種,均由main()函數或其它一般函數調用,若調用
的是有參函數,則參數在調用時傳遞。
C/C++語言中的main函數,經常帶有參數argc,argv,如下:
int main(int argc, char** argv)int main(int argc, char* argv[])從函數參數的形式上看,包含一個整型和一個指針數組。當一個C/C++的源程序經過編譯、鏈接後,會生成擴展名為.EXE的可執行文件,這是可以在操作系統下直接運行的文件,換句話說,就是由系統來啟動運行的。對main()函數既然不能由其它函數調用和傳遞參數,就只能由
系統在啟動運行時傳遞參數了。
在操作系統環境下,一條完整的運行命令應包括兩部分:命令與相應的參數。其格式為:
命令參數1參數2....參數n¿
此格式也稱為命令行。命令行中的命令就是可執行文件的文件名,其後所跟參數需用空格分隔,並為對命令的進一步補充,也即是傳遞給main()函數的參數。
命令行與main()函數的參數存在如下的關系:
設命令行為:program str1 str2 str3 str4 str5
其中program為文件名,也就是一個由program.c經編譯、鏈接後生成的可執行文件program.exe,其後各跟5個參數。對main()函數來說,它的參數argc記錄了命令行中命令與參數的個數,共6個,指針數組的大小由參數argc的值決定,即為char*argv[6],指針數組的取值情況如圖6-15所示。
數組的各指針分別指向一個字符串。應當引起注意的是接收到的指針數組的各指針是從命令行的開始接收的,首先接收到的是命令,其後
才是參數。
下面的程序演示argc和argv的使用:
[cpp]
#include<iostream>
using namespace std;
int main(int argc,char **argv){
for(int i=0;i<argc;i++)
cout<<"Argument "<<i<<" is "<<argv[i]<<endl;
return EXIT_SUCCESS;
}
#include<iostream>
using namespace std;
int main(int argc,char **argv){
for(int i=0;i<argc;i++)
cout<<"Argument "<<i<<" is "<<argv[i]<<endl;
return EXIT_SUCCESS;
}
該程序編譯運行成功,產生了 test.exe 文件,在打開DOS窗口,用cd命令進入到 test.exe 文件夾下 ,在DOS下輸入如下命令:
test.exe hello! this is a test!
則運行的結果如下: