C语言学习笔记----HelloWorld的诞生

来源:互联网 发布:玄铁重剑淘宝 编辑:程序博客网 时间:2024/06/09 21:02

C语言学习笔记----HelloWorld的诞生

 

虽然网上已经有很多关于c语言的教程,这毫无疑问,毕竟c语言是一门历史久远,并且功能强大的语言。但我还是要自己写一遍,通过博客来让自己的思路更清晰,若能给初学者带来一定借鉴价值,不胜荣幸。当我学完c语言时,不止一次的质问它的能力,其实后来我发现其实c语言有很多厉害的宝藏我没有了解到也没有认识到罢了,是我自己的问题。那么来重新探索一遍吧。欢迎大家批评指正。

 

由于c语言有各种各样功能强大的IDE(集成开发环境),他们的安装配置网络上都有很多教程,而我想专注于语言本身,所以在这里就不费劲介绍这些,想来大家也会厌烦了日复一日的安装配置……

 

那么我在这里用的是CodeBlocks,一款开源且强大的的IDE(其实我想单独用gcc编译器,vim编辑器,gdb调试器,但一想那么麻烦,,,,,,)

 

学习一种编程语言时,人们总是从写出一个Hello,world!程序开始,来获得写出第一个程序的成就感,据说人类的第一个程序就是输出的HelloWorld,那么后来被作为最能体现一种程序语言结构的例子,它被广泛应用。一个HelloWorld程序就可以透露很多的信息,为了不浪费或者忽略这些信息,那我们先了解一些理论知识,再来开启我们我们第一个程序的制作道路。

 

不知道初学者们在沉浸在可以给计算机亲自下指令的时候有没有想过,指令是如何得到执行的?那我粗浅的写一下来防止懵懂的去学习。我们按照一定的语法写一些c语言的句子,

其实计算机看不懂我们在说什么,然后“编译器”来把我们的句子按照c语言的语法规则翻译成我们的计算机能够“听”懂的语言:二进制,那是些只有01的东西,这要是让我们写起来那得累死哟,可计算机就爱这口,那为什么二进制可以被计算机读懂呢?那是因为二进制可以用电表示出来,1表示高电平,0表示低电平,计算机的大脑(CPU)里有数以亿计的晶体管,他们都有高电平和低电平,计算机归根到底是电的,通过电信号来完成最根本最底层的操作。其实从c语言到机器语言(01)并没有我说的这么简单,编译器也是一个软件,一个很厉害的软件,从C语言到机器语言的过程发生了很多有趣的事,有兴趣的同学可以自己研究下。那现在大家明白了你写完一个c语言文件是不能运行的,需要找编译器帮你翻译成机器语言计算机才肯听你的。(放在IDE里就是按一下编译键而已)。

 

那我们来写第一个c文件。

 

 

 

编译以后运行的结果是:

 

 

可以看到成功输出了Hello World! 好吧,这没有什么稀奇的,按照惯例,讲一下那些语句的意思。第一行:#include <stdio.h>  这是啥呢?其实这句不是告诉计算机的,而是我们对编译器说的话,那这句话的意思就是告诉编译器“我有些东西在名字为“stdio.h”的文件里,如果你在我这里找不到的话去这里面找。”,那我就开始好奇到底是什么东西在stdio里。

Stdio的意思其实是standard input & output"标准输入输出的缩写,以.h”为扩展名的文件叫做头文件,他提供一些早就写好的功能的“函数”,这样以后大家用到就不用重复写了,新名词来了“函数”又是什么?不要怕,这个跟数学里的函数不一样,你会喜欢它而不是害怕它,所谓函数就是实现了一些功能的代码块,可以先这样理解,就是把这个功能的C语言语句都写了,然后用一句函数来代替那么多句。是不是看起看来很方便。

说函数函数就来了,下面的int main()其实就是一个函数,你在里面写的东西就是这个函数的功能,你看见没有,我们已经在创建函数了其实,但main()函数是有点特殊的,它是独一无二的,计算机运行的时候就从它这里开始,现在你可以想到,其实我们计算机上运行的所有程序大概都有这么一个main()函数。前面的int是什么?这是一种叫做数据类型的标识符。标识符顾名思义就是标定东西的嘛,贴个标签。int代表的含义是整数,他其实还有一定的大小限制,这个后面再提。现在我们简单的知道int代表整数了……,那把它搁在main()前面是在宣示主权?说main()是一个整数类型的函数?其实差不多,数据类型放在函数名称前面来说明这个函数的返回值是什么。那什么又是返回值呢?哎呦喂,怎么这么多问题……举个栗子,如果有一个函数的作用是计算1+1等于几==,那我们需要得到计算的结果,就需要把这个结果返回到函数外面,这样大家就都知道结果了。那main()函数的外面是啥?是操作系统。后面大家可以看见有一句return 0return明显是返回的意思,返回了一个整数0,系统收到这个0就知道这个程序成功运行完了,来收回这个程序在内存中占用的资源(就像死人不能浪费活人的资源)。那中间的printf又是个什么玩意,其他语句我们都讲过了,就剩他了,看样子HelloWorld也在它身上,print是打印的意思,f其实是format的缩写,那连起来就是格式化打印。就是它把HelloWorld打印在屏幕上的,打印也是一种数据输出的方式。前面我们还在好奇,到底是什么东西放在stdio里了,其实就是这个家伙。

printf也是一个函数,他有很多灵活的用法,后面再说。单单从这里我们发现printf作为一个函数竟然在另一个函数main()里面,这其实就说明C语言函数是可以互相嵌套的。可惜很多人前面没思考,后面接触的时候还感觉很新奇,比如我。大家都低估了HelloWorld的魔性……作为一个观察仔细的人,绝对不能有任何盲点,printf里面的\n是什么?也没见他输出到屏幕上。那么有些键盘上的键或者说有些功能是无法显现的,那就用\n这个组合来表示换行,这叫转义字符,转变其原有的意义来表示新的意义。句子都读完了,接下来是格式的问题,从代码中可以看到,用#来表示对编译器说的话,用大括号{}来表示函数的范围(身体),用;来表示一条语句的结束。缺一个都不行!HelloWorld终于讲完了?不,还早着呢……我们怎么能忍住不对它做点什么呢==

就不想按照规矩来,如果返回1会怎样呢?

 

    哦,还是能正常运行,只不过Process returned 1,看来系统没对返回值是什么做相应的处理。那你其实可以做对它的处理,hh

 

 

Void一定是跟int一样的家伙,他表示,函数不返回任何东西,大家可以看到后面的return 0;没了,并且运行时是正常的。但是真的什么都不返回?我可不信,不返回点啥系统咋知道他结束运行了,

 

返回了10。至于为什么,可以自己研究一下。

 

如果你在main()前面省去了int或者省去了intreturn 0;编译器都会默认为int,返回0.其实你可以试试这样

 

 

当然这不是明智和有趣的做法,但谁让编译器那么可爱呢,不调戏一下怎么了解它。。。


0 0
原创粉丝点击