发布网友 发布时间:2022-04-24 06:37
共1个回答
热心网友 时间:2022-06-17 00:49
一、编写第一个C语言程序-Hello World
为什么称第一个程序为“Hello Wolrd”呢?其实计算机行业里面,学习任何技术的第一个程序都可以称为“Hello World”。“Hello World”的字面意思是“你好,世界”,也就是跟世界打招呼。我们第一个程序在这世界上诞生了,那肯定要跟世界打声招呼嘛,所以就称为“Hello World”。
1.用什么工具写代码
首先我们要做的肯定是写代码,在代码里面说清楚想要计算机做出怎样的操作。其实写代码就像平时写文章一样,只是在电脑上写一些文本内容,那用什么工具来写代码么?平时我们在Windows中写文章,可以用记事本、Word等文本编辑工具。在Mac中呢,我们可以安装一些文本编辑工具来写代码,比如UltraEdit(点击链接可以下载UltraEdit)。当然,在实际开发中,为了提高开发效率,一般会使用开发工具,开发工具的好处,我在前面文章中已经说过了。不过呢,开发工具屏蔽了很多操作细节和语法细节,不利于初学者直观、系统地学习一门语言。因此,在这里,我们暂时使用文本编辑工具UltraEdit来写C语言代码。
2.写代码
1> C程序由函数构成
写代码之前,你首先要知道:任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。
比如你用C语言编写了一个MP3播放器程序,那么它的程序结构如下图所示:
从上图可以看出:函数就是用来实现某个功能的程序段,每一个函数都有自己的功能。因此,你应该把实现某个功能所需的代码都写在函数中。比如,有个函数的功能是播放MP3,那么播放MP3的代码都应该写到这个函数中。
当调用(执行)一个函数时,计算机就会按顺序执行函数中的所有代码,从而展示函数所实现的功能。
一般来说,我们会将不同的功能交给不同的函数去实现。比如,将暂停播放MP3的代码写到一个函数中,将停止播放MP3的代码写到另一个函数中。因此,一个C程序中可能会有很多的函数。
2> C程序的入口
前面说到:一个C程序中可能会有很多的函数,这样就会有个疑问:当我们运行整个程序时,在众多函数中,计算机会先执行哪个函数呢?也就是说,一个C程序的入口在哪里?我写了几千行的代码,应该先从哪一行代码开始执行啊?是从第一行代码还是从最后一行代码开始执行啊?
其实,C程序的入口是一个名字叫做main的函数,简称main函数。(为了区分函数,每一个函数都有一个名称)也就是说,不管整个程序中有多少个函数,都是先执行main函数。不管main函数写在文件中间,还是文件末尾,也都是先执行main函数。
需要注意的是:
如果一个C程序中没有main函数,那么这个程序就不具备运行的能力。连程序的入口都没有,还运行什么?
一个C程序中只能有一个main函数。想象一下也知道,如果有多个main函数,究竟先执行哪一个main函数呢?这会让计算机无法选择
3> 编写main函数
现在已经知道,要想运行一个C程序,必须有一个main函数,接下来就在文本编辑工具中编写一个main函数。main函数的格式大致如下:
第1行的int暂时不用去理解,先认为是main函数的固定写法
第1行的main是函数名称,main后面的一对小括号()是函数的标志,绝对不能缺少!而且这对小括号是“英文括号()”,不是“中文括号()”!
第2行开始,有一对大括号{},函数内部的代码都要写到这对大括号里面。每一个函数都有一对{},{}里面的内容可以称为“函数体”。
在第3行添加了一行return 0;,暂时不用理解它的意思,先认为是main函数的固定写法。
像第3行这种写在函数中的代码可以称为一条“语句”。写完一条语句后,要在尾部加上一个分号“;”,代表语句结束了
4> 编写输出语句
接下来在main函数中添加代码。
1 #include <stdio.h>
2
3 int main()
4 {
5 printf("Hello World\n");
6 return 0;
7 }
在第5行添加了一条语句printf("Hello World\n");,这条语句的作用是让计算机在屏幕上输出用双引号""括住的内容:Hello World,后面的"\n"是一个转义字符,表示回车换行,因此,输出Hello Wrold这一串内容后会自动换行。至于为什么这条语句要这样写?为什么这条语句能让计算机输出东西?这些疑问都先搁着,以后会详细解释。
为了保证第5行代码的正常使用,就在main函数的前面加了一行代码#include <stdio.h>,暂时不用去深刻了解它的意思,默默加上即可,注意,这里是不用加上分号";"的
当运行这个程序,就会先执行main函数,接着就会按顺序执行main函数大括号{}中的所有语句(第5行、第6行语句)
需要注意的是:main函数中所有语句都必须写在第6行return 0;语句的前面,先别问为什么,以后会详细介绍
3.保存为C程序的源文件
代码写完了,总得保存起来吧,保存为什么格式的文件呢?每个文件都有自己的拓展名,不同的拓展名就代表着不同类型的文件,比如.mp3代表着音频文件,.txt代表着文本文件。我们前面编写的C语言代码,应该保存为一个拓展名为.c的文件,这个.c文件称为C语言程序的“源代码文件”,也称为“源文件”。
按下快捷键command + s,输入文件名(我这里叫做one.c),选择文件格式
就这样,第一个C语言程序就写完了,非常简单吧,一点压力都没有
回到顶部
二、编译程序
前面已经把程序写好了,迫不及待想做的事情肯定是运行程序,看看计算机会有什么反应。遗憾的是,前面编写好的one.c文件还不能够运行。上一篇文章已经说过了,计算机只能识别0和1组成的机器指令,你现在写的这些什么int、main这些英文,它是看不懂的。我们需要使用C语言编译器,将源文件翻译成只有0和1的二进制文件,这个翻译过程,我们称之为“编译”。
Mac系统上支持一款叫做gcc的编译器,gcc支持多种编程语言:C语言、C++、Objective-C、Java等。在后来,苹果公司自己开发了一款叫做clang的编译器,目标就是要超越gcc。我们这里就采用clang编译器来编译程序。要想在Mac中使用clang编译器,首先要安装一个命令行工具(Command Line Tools)
1.下载安装命令行工具
安装命令行工具的方式有2种。
1> 方式一:直接到苹果官网下载
先点击屏幕左上角的“苹果图标”,查看你的Mac系统版本
如果你的Mac是Lion系统(版本<=10.7),请选择下载:
如果你的Mac是Mountain Lion系统(版本>=10.8),请选择下载:
2> 方式二:先到苹果官网下载安装Xcode,然后打开Xcode,在Xcode中安装命令行工具
2.打开终端
安装完命令行工具后,就可以使用clang编译器了。那怎么使用clang呢?通过在“终端”中输入相应的clang指令来启动编译器。
默认情况下,终端所指向的路径是用户的个人主文件夹,我的主文件夹是/Users/apple,我的用户名叫apple
3.跳转到one.c所在的路径
为了方便操作,我们应该将终端的路径切换到one.c所在的路径,one.c存放在我的桌面,文件夹路径是/Users/apple/Desktop
输入指令:cd /Users/apple/Desktop , 然后敲回车,指令"cd"是改变路径的意思。
4.输入编译指令,编译one.c文件
输入指令:cc -c one.c , 然后敲回车
指令"cc -c"表示编译某个源文件,后面跟上源文件的名称或者全路径。
如果敲完编译指令后,没有显示太多的信息,说明你编译成功了。编译成功后,会在终端所在的路径下生成一个二进制文件,称为“目标文件”,拓展名为".o",文件名与源文件一致。one.c文件编译成功后就生成了one.o文件。
补充:在开发过程中,不可能将所有的代码都写在一个.c文件中,为了模块化开发,一般会将不同的功能写到不同的源文件中。如果要同时编译多个源文件,这样写:cc -c one.c two.c three.c。源文件编译之后,每个源文件都会生成对应的.o文件,比如two.c生成了two.o、three.c生成了three.o