命令行参数 main()函数设计
一、main()函数的形式
int main( void )--无参数形式
{
...
return 0;
}
int main( int argc, char *argv[] )--带参数形式
{
...
return 0;
}
int指明了main()函数的返回类型,函数名后面的圆括号一般包含传递给函数的信息。
void表示没有给函数传递参数。
关于带参数的形式,我们等会讨论。
浏览老版本的C代码,将会发现程序常常以 main()
这种形式开始。C90标准允许这种形式,但是C99标准不允许。因此即使你当前的编译器允许,也不要这么写。
你还可能看到过另一种形式: void main()
有些编译器允许这种形式,但是还没有任何标准考虑接受它。
C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地表示:void main( ) 的定义从来就不存在于 C++ 或者 C 。所以,编译器不必接受这种形式,并且很多编译器也不允许这么写。
坚持使用标准的意义在于:当你把程序从一个编译器移到另一个编译器时,照样能正常运行。
二、 一段示例
/c.c
#include "stdio.h"
int main(int argc, char *argv[])
{
int count;
printf("The command line has %d arguments: /n",argc-1);
for(count=1;count<argc;count++)
{
printf("%d: %s/n",count,argv[count]);
}
return 0;
}
运行及输出:
编译运行,在命令行输入c I love you 回车,下面是从命令行运行该程序的结果:
The command line has 3 arguments:
1:I
2:love
3:you
解释
从本例可以看出,程序从命令行中接受到4个字符串(包括程序名),并将它们存放在字符串数组中,其对应关系:
- argv[0] ------> c(程序名)
- argv[1] ------> I
- argv[2] ------> love
- argv[3] ------> you
- 至于argc的值,也即是参数的个数,程序在运行时会自动统计,不必我们操心。
这个例子中,每个字符串都时一个单词(字母),那既然是字符串,要把一句话当作参数赋给程序该怎么办?
你可以在命令行里这样输入 c "I love you." "I'm too."。
程序运行结果:
The command line has 2 arguments:
1:I love you.
2:I'm too.
其对应关系:
- argv[0] ------> c(程序名)
- argv[1] ------> I love you.
- argv[2] ------> I'm too
命令行参数 main()函数设计的更多相关文章
- Java中eclipse与命令行向main函数传递参数
我们知道main函数是java程序的入口,main函数的参数类型是String[]. 1.Eclipse中向main方法传递参数 例如: public class Mytest { public st ...
- VS添加命令行参数main(int argc, char** argv)
- C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例
C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...
- .NET 命令行参数包含应用程序路径吗?
如果你关注过命令行参数,也许发现有时你会在命令行参数的第一个参数中中看到应用程序的路径,有时又不会.那么什么情况下有路径呢? 其实是否有路径只是取决于获取命令行参数的时候用的是什么方法.而这是 Win ...
- 解析main函数的命令行参数
原创文章,转载请正确注明本文原始URL及作者. 介绍 写C/C++程序,我们常常需要把main函数的参数作为选项来传递.在linux中,解析选项有专门的函数可以用. int getopt(int ar ...
- C++ main函数命令行参数使用
1. C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv ...
- c/c++ main 函数命令行参数的使用
C程序最大的特点就是所有的程序都是用函数来装配的.main()称之为主函数,是所有程 序运行的入口.其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用 ...
- C++main函数与命令行参数,退出程序
本文翻译自:https://docs.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=vs-2019 (除动态链接库d ...
- Unix系统编程()main函数的命令行参数
命令行参数输入双引号是什么效果? 好像可以去空格化.
随机推荐
- The listener supports no services解决一例
The listener supports no services解决一例 Listener动态监听静态监听注册实例 今天做Advacned Replication实验的时候碰到一个问题,启动目标 ...
- EntityFramework基础
好久没有学习新东西了,最近研究了下EntityFramework,将基础代码贴出来, Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity ...
- MSsql bcp
--将test_1表导出在F盘根目录下/ reconfigure EXEC master..xp_cmdshell 'bcp test.dbo.test_1 out f:\abc.txt -c -q ...
- 了解 JavaScript 应用程序中的内存泄漏
简介 当处理 JavaScript 这样的脚本语言时,很容易忘记每个对象.类.字符串.数字和方法都需要分配和保留内存.语言和运行时的垃圾回收器隐藏了内存分配和释放的具体细节. 许多功能无需考虑内存管理 ...
- 44. 普通对象建一个用户方法,提交时报:失败:建立业务逻辑对象失败:业务逻辑定义更新到数据库失败:ORA-00904: "DEFVERSION": 标识符无效
LBBIZPROCESSDEFSLBHISTORYBIZPROCESSDEFSLBHISTORYMULTIWFDEFSDESIGNLBHISTORYWORKFLOWDEFSDESIGNLBMULTIW ...
- 深入理解JS异步编程四(HTML5 Web Worker)
>Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker We ...
- form 编译命令
11i: Form:f60gen $AU_TOP/forms/ZHT/GLXJEENT.fmb userid=apps/tpsadbm output_file=$GL_TOP/forms/ZHT/GL ...
- Java反射得到属性的值和设置属性的值(转)
package com.whbs.bean; public class UserBean { private Integer id; private int age; private String n ...
- 在bootstrap ace样式框架上修改的后台管理型模板(Tab页后台管理模板)
后台管理模板开始用frameset布局,但是有时候会遮挡比如上面导航或者左边导航的二级三级弹出菜单,因为宽度被限制了,所以有时候就用easyui或者ext的,但是样式不好看,然后看到了bootstra ...
- Hibernate之jpa实体映射的三种继承关系
在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承 ...