C++学习2:main()函数深入学习

main()函数是每一个程序的开始,它是所有程序的入口,其它的函数都是直接换间接在main()中被调用来发挥作用的。

在程序运行时,编译器会为程序增加启动代码,由启动代码调用main()函数,从而进入程序。因此,启动代码是程序和操作系统之间的桥梁。


main()函数一般情况下有以下三种函数头定义:

1、void main(),无形参,无返回值。

2、int main(),无形参,返回一个int值,返回值用来记录程序状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。

3、int main(int argc,char *argv[]),返回一个int值,用于记录程序状态。带有两个形参:第一个形参是一个int值argc,用来统计命令行总的参数个数。第二个形参是一个指向字符串的指针数组argv[],是程序的路径名称和输入的变量。在系统中使用空格把各个字符串隔开,一般情况下,把程序的路径和名字赋值给argv[0],后面的argv[1]、argv[2]等用来存储输入的变量。

这种方法主要是为了方便修改深入参数,每次修改时,不需要从代码中改变变量值,只要在调试中改动命令参数即可,其具体使用方法如下:

现在我编写了一个很简单的程序,用来演示下int main(int argc,char *argv[])的功能。

#include "iostream"
#include <stdlib.h>
int main(int argc, char ** argv)
{
	int i;
	printf("argc = %d \n",argc);
	for (i=0; i < argc; i++)
		printf("这是第%d个参数,为 %s.\n", i+1,argv[i]);
	system("pause");
	return 0;
}


此时如果直接在VS中运行,效果是这个样子的


可见,此时并没有输入命令,默认情况下argv[0]是用来存放程序的路径和名字,此时argc = 1,程序就只进行了一次读取。


那怎么样来给argc和argv[]赋值呢?有两个方法:

1、cmd命令行

首先对程序进行编译,然后通过命令行输入程序路径和名称+变量,如D:\Test\Test1\Debug\Test1.exe a b,共三个参数,此时,argc会被置为3,D:\Test\Test1\Debug\Test1.exe将会被赋给argv[0],a赋给argv[1],b赋给argv[2]。

运行效果如下:



2、VS中配置命令参数

右击项目打开属性,选择配置属性中的调试,修改其命令参数。


运行效果和上面相同。这里解释下,没有输入命令的情况下,其程序的路径和名字是在VS自动赋给argv[0]的,因此会有刚才的结果。


注意,是存在不包含main()函数一些例外情况。例如在Windows编程中,可以编写一个动态链接库(DLL)模块,这是其他Windows程序可以使用的代码。由于DLL独立的程序,incident不需要main()函数。用于专门环境的程序——如机器人中的控制器芯片——可能不需要main()函数。有些编程环境提供了一个框架程序,改程序调用一些非标准函数如_tmain(),这种情况下,有一个隐藏的main(),它调用t_main()。但是常规的独立程序都是需要main()函数的。


  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值