带参数的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函数的更多相关文章

  1. C语言带参数的main函数

    C语言带参数的main函数 #include<stdio.h> int main(int argc,char*argv[]) { int i; ;i<argc;i++) printf ...

  2. C语言学习011:带参数的main函数

    直接上代码 #include <stdio.h> int main(int argc,char *argv[]){ printf("%i \n",argc); int ...

  3. C语言带参数的main()函数

    示例代码: #include<stdio.h> int main(int argc, char *argv[]) { int i; printf("Total %d argume ...

  4. 带参数的main函数以及execl函数的应用

    ---恢复内容开始--- 代码1:(带参main函数) #include<stdio.h> int main(int number, char *parameter[]) { ; prin ...

  5. C/C++ 不带参数的回调函数 与 带参数的回调函数 函数指针数组 例子

    先来不带参数的回调函数例子 #include <iostream> #include <windows.h> void printFunc() { std::cout<& ...

  6. C传递参数给main函数

    一个很简单的给main函数传递参数的例子: #include <stdio.h> //int main(int argc, char *argv[]){ int main(int argc ...

  7. JavaScript学习笔记 -- 带参数arguments的函数的用法

    JavaScript函数有带参数与不带参数两种形式,不带参数情况如下: function myFunction() { alert('HelloWorld!') } 在这种类型的函数中,输出值是确定的 ...

  8. C++: 带参数回调函数和不带参数的回调函数;

    在C++中,回调函数的应用比较广泛且重要. 通过传递函数指针到其他地方,能够实现远程回调的作用,能够实现远程调用而不需要事件触发信号或者其他机制来实现,方便而快捷: 首先,回调函数有两种形式:  静态 ...

  9. PyQt Designer中带参数的信号为什么匹配不到带参数的槽函数?

    老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...

随机推荐

  1. Managed Media Aggregation using Rtsp and Rtp

    his article was written almost 2 years ago, it's content may not reflect the latest state of the cod ...

  2. Split Animation Clip From FBX and Multiply Mode Sprite

    Use Script To Creat 2D Animation Clip From Multiply Mode Sprite 很多时候美工拿过来的一张序列帧图片,我们需要转换成 Multiply M ...

  3. Github——Git设置及GitHub的使用

    把github上的help. First : 安装:ubuntu 下,终端输入命令: sudo apt-get install git-core git-gui git-doc Next : 设置SS ...

  4. Java 通过JDBC连接Mysql数据库的方法和实例

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  5. Python中json.loads解析包含\n的字符串会出错

    用python中的json.loads解析字符串,失败了. [解决过程] 1.调试了半天,终于发现,如果把其中的: "呵呵加那么多连接啊\n\n这个标准还是不错的\n\n给大家推荐一个更多的 ...

  6. asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(七)—— 添加用户到数据库-obj转json

    这一节讲一下如何添加用户名和密码到已建的sqlite.db数据库中. 当在datagrid的toolbar中输入用户名.密码,然后点击添加按钮时,将该用户加入数据库,并显示出来.datagrid表格里 ...

  7. Transact-SQL 参考(数据库引擎)

    记录下这个地址: https://technet.microsoft.com/zh-cn/library/bb510741(v=sql.105).aspx

  8. Silverlight:telerik RadControls中RadGridView的一个Bug及解决办法(转载)

    当RadGridView中嵌套RadComboBox,且RadGridView的高度不够出现滚动条时,上下拉动滚动条后,RadComboBox中的选中值将丢失! 如下图: 滚动条未拖动前 滚动条上下拖 ...

  9. Linux下(centos6.8)JDK1.8的安装与配置

    今天说下在Linux(centos6.8)系统下的JDK安装与配置. 据我所知的jdk安装方式有三种(rpm.yum方式没用过,暂且不提)今天只说解压安装方式: 一.解压jdk安装包: 附上jdk1. ...

  10. Atitit.atijson 类库的新特性设计与实现 v3 q31

    Atitit.atijson 类库的新特性设计与实现 v3 q31 1. V1版本---集成了多引擎1 2. V2版本新特性 --bsh脚本化2 3. V3版本新特性---循环引用解决使用fastjs ...