Bootstrap

C/C++中main函数接受外部参数的写法,以及如何传参数

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;
}





;