main();处理命令行选项
2015-12-22 12:58
417 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
Main():处理命令行选项
int main(int argc,char *argv[])是c++的里面的main()函数的一种扩展原型
其中int argc 表示的是运行程序时命令行里所带参数的个数+1 (因为包括了该程序名) ,如果不带参数的话那就默认是1
char *argv[]参数是字符数组的指针,也可以用char **argv表示 ,不过严格来讲是不一样的。
前者是指向字符指针的数组,后者是指向字符指针的指针。由于c里面没有真正的数组,是用指向一个数值的系列的指针来表达数组的,所以上面的两种表示差不多。不过char ** 实际上有二义性,可能是一个char*
的指针或char *的数组的指针。所以char* argv[] 就要明确一些。
argv[]里面的内容就是参数的内容。如果不带参数的话那argv[0]就是程序的路径名
请看下面两个例子(两个都是一个意思,一个是C版,一个是C++版)
/////////////////////////////////C++版/////////////////////////////////////
#include <iostream.h>
int main(int argc,char *argv[])
{
cout<<"argc= "<<argc<<endl;
for(int i=0;i<argc;i++)
{
cout<<"argv["<<i<<"]="<<argv[i]<<endl;
}
return 0;
}
/////////////////////////////////C版/////////////////////////////////////
#include <stdio.h>
main(int argc,char *argv[])
{
int i;
printf("argc=%d/n",argc);
for( i=0;i<argc;i++)
printf("argv[%d]=%s/n",i,argv[i]);//
getch();
}
编译后程序的名字叫Program.exe,在E盘根目录下,运行时,显示的结果是如下图
E:/program(回车)
Argc=1
Argv[0]=E:/PROGRAM.EXE
E:/program aa bb cc(回车)
Argc=4
Argv[0]=E:/PROGRAM.EXE
Argv[1]=aa
Argv[2]=bb
Argv[3]=cc
至于aa bb cc 这些参数是干什么的,那是在程序里自己定义的
Main():处理命令行选项
int main(int argc,char *argv[])是c++的里面的main()函数的一种扩展原型
其中int argc 表示的是运行程序时命令行里所带参数的个数+1 (因为包括了该程序名) ,如果不带参数的话那就默认是1
char *argv[]参数是字符数组的指针,也可以用char **argv表示 ,不过严格来讲是不一样的。
前者是指向字符指针的数组,后者是指向字符指针的指针。由于c里面没有真正的数组,是用指向一个数值的系列的指针来表达数组的,所以上面的两种表示差不多。不过char ** 实际上有二义性,可能是一个char*
的指针或char *的数组的指针。所以char* argv[] 就要明确一些。
argv[]里面的内容就是参数的内容。如果不带参数的话那argv[0]就是程序的路径名
请看下面两个例子(两个都是一个意思,一个是C版,一个是C++版)
/////////////////////////////////C++版/////////////////////////////////////
#include <iostream.h>
int main(int argc,char *argv[])
{
cout<<"argc= "<<argc<<endl;
for(int i=0;i<argc;i++)
{
cout<<"argv["<<i<<"]="<<argv[i]<<endl;
}
return 0;
}
/////////////////////////////////C版/////////////////////////////////////
#include <stdio.h>
main(int argc,char *argv[])
{
int i;
printf("argc=%d/n",argc);
for( i=0;i<argc;i++)
printf("argv[%d]=%s/n",i,argv[i]);//
getch();
}
编译后程序的名字叫Program.exe,在E盘根目录下,运行时,显示的结果是如下图
E:/program(回车)
Argc=1
Argv[0]=E:/PROGRAM.EXE
E:/program aa bb cc(回车)
Argc=4
Argv[0]=E:/PROGRAM.EXE
Argv[1]=aa
Argv[2]=bb
Argv[3]=cc
至于aa bb cc 这些参数是干什么的,那是在程序里自己定义的
相关文章推荐
- OC中assign、copy 、retain等关键字的含义
- Leetcode-220. Contains Duplicate III
- ORA-09817: Write to audit file failed 的解决方法
- container_of分析【转】
- method chaining
- 两种方法解决tomcat的 Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
- 问题描述:ADB not responding. You can wait more,or kill“abd.exe” process manually and click 'Restart'
- VMware卸载安装问题(The MSI Failed)
- 免ajax省市三级联动:http://runjs.cn/detail/rcsqficf
- Dynamics AX 2012 R2 AIF No Endpoint Behavior Named 'clientEndpointBehavior'
- [leetcode] 70. Climbing Stairs 解题报告
- Train Problem I(杭电1022)(栈的应用)
- NSLayoutConstraint的简单应用
- Contains Duplicate II
- Daily Scrum NO.10
- C++迭代器失效http://blog.csdn.net/vipvipvip/article/details/6295973
- Daily Scrumming* 2015.12.21(Day 13)
- Yocto tips (14): Yocto中编译链的配置变更(tuning)
- 认识retain copy assign strong weak 的区别
- LeetCode 11 - Container With Most Water