美文网首页
零基础学C语言(1):Hello World!

零基础学C语言(1):Hello World!

作者: 流光月痕 | 来源:发表于2020-04-12 21:03 被阅读0次

    从今天开始,我们进入C语言第一章的学习——程序结构,我们将以一个世界上最伟大的程序来讲解C语言中神奇的事情。

    hello world 的由来

    如果你学过其他编程语言,几乎所有的资料书或是教学视频,都是从Hello World这第一个程序开始学起。

    其起源来自于1972年,C语言之父、UINX之父——贝尔实验室一名研究员Brian Kernighan,在撰写《B语言教程与指导(Tutorial Introduction to the Language B)》时用到的第一个程序。

    在我刚接触C语言的时候,我的学长告诉我“当你会写“hello world”程序的时候,你就学会了C语言的60%了。”

    当我听到这句话的时候,我仿佛看到了天堂,C语言这么简单啊,还以为多难学呢。以至于我现在特想把那个学长叫过来按在地上锤。

    虽然这句话非常不靠谱,但同时也向我们说明了,这个程序的重大意义。你想想,这个程序不重要,干嘛所有的书籍都在讲解它呢。

    说这么热闹,那我们来看看这个程序的真面目是什么。

    世界上第一个程序

    加上两个大括号和空格行,一共8行的代码,就这么简单。

    是的,这就是我曾经学长告诉我的,敲会这几行代码,就能学到C语言的60%的神奇程序。

    我相信,各位不会编程的小伙伴们,和我当年有一样的疑问,这个东东到底有啥神奇的地方呢?

    为了方便大家理解,我将程序进行逐句拆解:

    首先看程序的第一行:#include <stdio.h>,这句话是一个预处理器指令(预处理这个奇怪的东西,我们在第六章重点学习,新手暂时可以不必理解预处理是什么意思),告诉 C 编译器在实际编译之前要包含 stdio.h 文件,也叫引用头文件。

    一般形式是:#include + 要应用的文件名称

    这句代码有什么作用呢?

    说人话就是我接下来要用到的某些东西是在stdio.h这个文件里的,你用人家的东西,你得告诉stdio.h这个文件一声,一声不吭用人家东西那叫偷窃,属于违法行为,所以在程序编译的时候会报错。

    再来看第三行(第二行是空格行):int main(int argc, char *argv[]),这个东西叫主函数,它是所有程序运行的开始,顾名思义,所有的程序都会有main函数,有且只有一个主函数

    第四行和第八行是两个大括号,所有的函数都要有两个大括号,表示括号里的领地是属于主函数的,就和领土国界一样,别人不能抢走。

    第五行/*……*/,这个叫注释注释里的内容将会被编译器忽略。C语言中是不能出现中文汉字和中文字符的(主要是C语言是人家外国人发明的,期待有一天你们NB了,也发明一种编程语言,让外国人也用中文编程,搞死他们),但是有时候我们写得程序比较大、多的时候,时间一长我们就会忘掉,想不起来这个程序写得是啥意思了,那怎么办呢,这时候就需要用到注释了。我们可以写在旁边,记录这句代码写的是是什么意思,有什么作用。

    那怎么注释呢,常用的方式有三种:

    1. 双右斜杠:“//”,这个可以进行单行注释,就是说你的注释只能写在这一行。

    2. 斜杠加星号:“/*……*/”这个叫多行注释,顾名思义,就是可以写好几行。这里要注意,不能在注释内嵌套注释,例如“/*……/*……/*……*/”,就会错误,因为每一个“/*”和“*/”都是成双成对出现的,像上面的用法就少两个“*/”,自然会炸。

    3. #if 0……#endif,这种方式应该是程序员最常用的注释了,数字0就表示注释,把0改成1,这段代码就可以被编译进去。它最大的用处不是注释,而是调试程序。

    第六行:printf("Hello world!\n");刚才我们在拆解第一行的时候说,引用“stdio.h”是因为下面用到的某些东西在这个头文件中,那这里的printf函数就是stdio.h头文件里的了,这是个打印函数,会在屏幕上显示消息双引号里的东西,那这里我们在双引号里写的是"Hello, World!",所以屏幕上也会显示"Hello, World!"。

    这屏幕上哪显示了啊?

    哈哈,先别着急,没显示是因为还没有对这个程序进行编译运行。

    怎么做呢?

    这里我用的是Code::Blocks软件,如果小伙伴还不知道IED的选择和安装的话,可以看看前面的一篇文章。

    我们点击二级菜单栏上一个黄色齿轮的图标,他有点像手机上的设置,这个图标就是对程序进行编译,或者你可以快捷键“ctrl + F9”,编译信息会显示在下方的Build Log窗口。如果出现错误的话,可以根据提示修改。

    我们编译后没有问题,接下来就是运行这个程序,点击黄色齿轮键边上的绿色的“右三角图标”,或者使用快捷键“ctrl + F10”,然后会弹出一个黑色窗口:

    我们看第一行,就是打印函数打印的信息。如果你要想显示别的,就在双引号输入别的。注意,双引号里的字符就不限制英文字符了,什么都可以,这里应该是除了注释里随便写之外的唯一特例了。

    程序是没有问题,但这里我们要注意两点,首先是“;”,可以看到,我们引用printf后,结尾是分号,在C语言中,一句完整的程序要以分号结尾;第二点是,printf函数里的双引号和“;”都必须是英文格式下的标点,否则会报错。

    再来看最后一行:return 0;程序从头运行到这里就终止了,return是返回的意思,return 0表示终止main()函数,并返回一个0值。返回值这个东西,一般约定俗成:如果程序是按照我们自己想要的运行方式执行,就返回0,如果不是就返回-1。当然,也不是固定的,看个人习惯。

    OK,至此,我们将这个号称学完就掌握了C语言60%的程序就讲解完了。为了让大家能够系统地理解,我将上述信息整理成下面这张图:

    可以自己和第一张图对比来看,应该是一目了然的。

    并非结束

    至此,整个程序Hello world的程序就基本分析完了,这也是一个程序的完整结构,那结束了吗?

    并没有,如果结束的话,这个60% 的C语言不也太打脸了嘛?

    有细心的小伙伴就会有疑问,main函数前面有个“int”,这是啥呢?

    其实,这里的int是返回类型,在return 0;这里我们讲到函数返回一个值0,它的返回类型是int型。

    啥叫返回类型?还有main后面括号里的“(int argc, char *argv[])”又是个什么玩意?还有整个过程说得编译、运行,头文件啥的,又是什么意思?

    别着急,下一节继续!

    本节作业

    模仿上述Hello world例程,在屏幕上打印出自己的名字,欢迎各位小伙伴在评论区晒出自己的作业,你们的支持就是我最大的动力!

    温馨提示:下面是个很奇怪的链接,具体多奇怪,大家点进去就知道了,另外别忘了保存哦:https://jinshuju.net/f/vOFfDW

    相关文章

      网友评论

          本文标题:零基础学C语言(1):Hello World!

          本文链接:https://www.haomeiwen.com/subject/rjximhtx.html