带参数的main函数
带参数的main函数
int main(int argc,char **argv)
或int main(int argc,char *argv[])
/*解析
依据《C程序设计语言(第二版.新版)》的讲述:
第一个参数(习惯上称为argc,用于参数计数)的值表示运行程序时,命令行中参数的数目;
第二个参数(称为argv,用于参数的向量)是一个指向字符串数组的指针,其中每个字符串对应一个参数。
int argc, char **argv 用于运行时,把命令行参数传入主程序。
argc -- 命令行参数总个数,包括 可执行程序名。
argv[i] -- 第 i 个参数。
argv[0] -- 可执行程序名。
*/
ANSI-C(C89/C99)的话main()函数有2种主要形式。
(1) int main(void)
(2) int main(int argc, char *argv[]) 或者int main(int argc, char **argv)
argv[argc]放空指针(NULL指针)。
argc和argv可以用别名。
另外,还有一种受系统限制的形式:
int main(int argc, char *argv[], char *envp[])
前两个参数同(2),第三个参数envp[]存放环境变量。
另外,搜集了一下C和C++中常见的几种形式:

(1) main()
(2) int main()
(3) int main(void)
(4) int main(int, char**)
(5) int main(int, char*[])
(6) int main(int argc, char **argv)
(7) int main(int argc, char *argv[])
(8) int main( int argc, char *argv[], char*envp[])
(9) void main(void)

(1)是(3)的简写。不推荐使用。
(2)是(3)的简写。在C++中是正确的形式。
(3)在C和C++中都是正确的形式。推荐使用。(还有缺省int的main(void)形式)。
(4)和(5)是不用参数时的一种写法。编译器级别高时会警告。不推荐使用。
(6)是(7)的另外写法。两种都可以,凭个人爱好。
(7)是带参数的正确的形式。推荐使用。
(8)是一种很少用的写法,且受系统限制。
(9)一般不认为是正确的写法。但是在嵌入式系统中有使用(包括void main()形式)
举例说明:
#include <iostream.h> int main(int argc,char *argv[])
{
for(inti=;i<argc;i++)
{
cout<<argv[i]<<'\t';
}
return0;
}
// 例如运行: abc.exe argc 等于 1, argv[0] 是 "abc.exe" // 例如运行: rec.exe 4 5.2 argc 等于 3, argv[0] 是 "rec.exe", argv[1] 是 "4", argv[2] 是 "5.2". 主函数里若有: int x; float y; char s[80]; strcpy(s,argv[0]); // 程序名存入 了 s sscanf(argv[1],"%d",&x); // x 得到数值4 sscanf(argv[2],"%f",&y); // y 得到数值 5.2
带参数的main函数的更多相关文章
- C语言带参数的main函数
C语言带参数的main函数 #include<stdio.h> int main(int argc,char*argv[]) { int i; ;i<argc;i++) printf ...
- C语言学习011:带参数的main函数
直接上代码 #include <stdio.h> int main(int argc,char *argv[]){ printf("%i \n",argc); int ...
- C语言带参数的main()函数
示例代码: #include<stdio.h> int main(int argc, char *argv[]) { int i; printf("Total %d argume ...
- 带参数的main函数以及execl函数的应用
---恢复内容开始--- 代码1:(带参main函数) #include<stdio.h> int main(int number, char *parameter[]) { ; prin ...
- C/C++ 不带参数的回调函数 与 带参数的回调函数 函数指针数组 例子
先来不带参数的回调函数例子 #include <iostream> #include <windows.h> void printFunc() { std::cout<& ...
- C传递参数给main函数
一个很简单的给main函数传递参数的例子: #include <stdio.h> //int main(int argc, char *argv[]){ int main(int argc ...
- JavaScript学习笔记 -- 带参数arguments的函数的用法
JavaScript函数有带参数与不带参数两种形式,不带参数情况如下: function myFunction() { alert('HelloWorld!') } 在这种类型的函数中,输出值是确定的 ...
- C++: 带参数回调函数和不带参数的回调函数;
在C++中,回调函数的应用比较广泛且重要. 通过传递函数指针到其他地方,能够实现远程回调的作用,能够实现远程调用而不需要事件触发信号或者其他机制来实现,方便而快捷: 首先,回调函数有两种形式: 静态 ...
- PyQt Designer中带参数的信号为什么匹配不到带参数的槽函数?
老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...
随机推荐
- java中short、int、long、float、double取值范围
一.分析基本数据类型的特点,最大值和最小值.1.基本类型:int 二进制位数:32包装类:java.lang.Integer最小值:Integer.MIN_VALUE= -2147483648 (-2 ...
- 传统项目目录结构下maven+junit+junitReport
<build> <defaultGoal>compile</defaultGoal> <sourceDirectory>${basedir}/src&l ...
- 恼人的The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved...错误,无奈用Struts的bean:write替代了JSTL的C:out
一个应用中有两个页面使用了JSTL的c:out输出,就类似这么简单三句 <c:if test="${!empty error}"> <h2>&l ...
- mui.ajax返回type为abort
最近在使用h5和mui开发app,发现mui.ajax有一个小bug 情况一: 参数和请求路径无误,但是总是调起失败的回调函数,打印出 type=abort (终止请求) 原因: mui.ajax默认 ...
- Android笔记:invalidate()和postInvalidate() 的区别及使用——刷新ui
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...
- C语言循环中降低推断——————【Badboy】
为了让编译器更好地优化循环,应该尽量让循环中降低推断,方法之中的一个是将推断语句整合进表达式.还是这个样例: for (int i = 0; i < 1000*10; i++) { sum += ...
- SSH——基于datagrid实现分页查询
1. 修改页面中datagrid的URL地址,访问action // 取派员信息表格 $('#grid').datagrid( { iconCls : 'icon-forward', fit : tr ...
- Android Studio+SVN配置生成apk文件
Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发 ...
- Flume、Kafka、Storm结合
Todo: 对Flume的sink进行重构,调用kafka的消费生产者(producer)发送消息; 在Sotrm的spout中继承IRichSpout接口,调用kafka的消息消费者(Consume ...
- udpsocket 通信C#例子
服务端代码: using System; using System.Collections.Generic; using System.Linq; using System.Net; using Sy ...