C/C++语言中的main函数,经常带有参数argc,argv,如下:
int main(int argc, char* argv[])//argv[0]表示一个指针
int main(int argc, char **argv)// *argv同样表示一个指针
argc: 整数, 为传给main()的命令行参数个数。
char** argv / char *argv[]: 字符串数组。
argv[0] 为程序运行的全路径名
argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
argv[2] 为执行程序名后的第二个字符串;
...
argv[argc]为NULL。
注意事项:
1. argv是一个指针数组,要明白它的存数格式。它的每个元素都是一个字符指针,数组的末尾是一个NULL指针。
2. 也是由于argv是一个指针数组,它指向数组的第一个元素(是一个字符指针),所以*argv是一个指向字符指针的指针,所以可以将其声明为char **argv。即声明为:【 int main( int argc, char **argv ) 】
3. 参数名称是不重要的,你可以声明为其它的名字,比如 【 int main( int a, char *b[] ) 】 都是可以的。
4. 指针数组argv的第 1 个元素,即argv[0],是程序运行的全路径名,也就是你的可执行文件的绝对路径名。
5. 如果你输入的参数中有空格,应该使用双引号括起来。
实现一个程序:将所有参数打印出来。文件名为:Untitled2.exe 路径:D:\学习文档\C练习代码\Untitled2.exe
开始->运行->输入cmd->改变路径到你Untitled2.exe文件所在的地方 (输入D:改变到D盘, 然后输入:cd 文件路径)
输入:Untitled2.exe a123 b3454 c443
#include<iostream>
using namespace std;
int main(int argc,char **argv) {
char ** temp = argv; /* 保留argv */
cout<<argc<<endl;
int i=0;
while( *temp != NULL ){
cout<<i++<<": "<<*temp<<endl;
++temp;
}
return 0;
}