首页技术文章正文

C++学习2:main()函数深入学习【黑马web前端】

更新时间:2019年07月26日 13时51分45秒 来源:黑马程序员论坛

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);
        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()函数的。





推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!