轻松理解C语言的入口函数main

原创 ningcaichen66 随笔 C语言 135阅读 2017-06-09 18:06:46 举报

只知道C语言必须要有一个且只能有一个而且名字还固定的main,But why ? 如果不了解它,就得多背诵一些莫名其妙的枯燥的规矩了。现在我试图用自己的理解来解释一下,供参考。

这就得从几方面来认识;

首先得从函数产生的来源说起。

在开发程序中为了不让代码重复(否则修改起来会要多处去修改,劳民伤财)。因此就想到了把公共的东西提取出来,借助数学函数的概念,封装出函数:可以有输入,可以有产出,中间是处理过程。

因此,函数的代名词也叫过程,那么由此可以推出:面向过程编程思想其实也就是面向函数编程思想,也就意味着你要封装出一个个的函数,然后一个个调用...这样就具有可移植性,下一个项目用到什么功能了,把那个函数直接拷贝过去即可。因此封装出函数一开始只是为了简化编程,但却衍生出更多的提高编程效率的结果:可移植性。

它的长相类似:void myfunc(){}

类比一下:void main(){},可见它就是一个函数。那么你的编程过程,其实也就是在一个名叫main的函数体里写东西而已。

这其实就是你编程的所有内容:就是在写一个main函数体...

认识了main是个函数,那么现在可以来看:为什么只能有一个?

你能在一个文件中写两个同名的函数吗?不能,因为有歧义;因此main函数只能有一个。

再来看为什么只能叫“main”,而不能叫其他,如“Main”或者“MAIN”或者其他名字。

试想一下:当你造了一个函数,你很想做的就是调用它,那么你是怎么调用的?函数名();

同理:你写的main(){}函数也就是让调用的,但你在什么地方调用过吗?没有啊,那么谁来调用呢?操作系统,一只看不见摸不着的大手。也就是说当你点“编译且运行”的时候,是操作系统来调用main函数的。然而你知道调用的时候是要写函数名的,也就意味着操作系统来调用的时候要让你写函数名,是不是感觉麻烦呢?因此操作系统就做了个小规矩:只找main函数,而不找其他。所以你的函数名就只能叫main。所以,你得感谢操作系统做的这个规矩,让你减少了调试运行时候的麻烦。就像在Linux上编译的时候,为什么只能写Makefile?因为make默认就只找这个文件一样...

现在它是不是变得可爱了?对,就是要它变得可爱、变得合乎常理,才能学有所成。这也就是轻松学习之道。

C语言为什么那么难?就是学习的时候太按它的写书顺序了,所以:要想学的轻松,不是你整日整夜的背语法,也不是喊口号就可以做到的,要灵活变通,要打破常规顺序,要螺旋迂回,要使用多种学习方法交互,要联想,要穿插,总之是一个综合的教学范畴。这也是为什么一个技术顶尖高手,却难以做到让你学的容易?因为:做技术开发和教学是两码事,一个可以埋头苦干,谁也不理解都无所谓,而且就是要你不理解,才显得他高大上和比你高一等。后者就完全相反,就得要让你理解的容易,就是要让你感觉到他原来和你一样,都是“贫苦出生的老百姓,不是什么高高在上的神仙”,要做到这一点就涉及了解宇宙苍生,就得涉及更多的综合知识范畴,是一个难度高多了的挑战。但我相信我有这个天赋......

最后要学的轻松,从心态上要有感恩之心,心胸开阔,你的潜力就会得到极大发挥。所以如果你还在比如地下室苦苦的挣扎和学习,你得感谢,因为这种经历可能你这辈子也就这么一次,当你学有所成了之后,你想回头到这里也没机会了,这正是培养你练就你的社会母校......

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复