本文试图通过上中下三篇文章引领大家进入C语言的世界。C语言是一个非常古老(年发明)的语言了,想必大家都有所了解,没有了解也没关系。C语言以难学和难以使用著称,想用好C语言更是难上加难。
本文不假设读者有任何其它编程语言的基础,但需要了解计算机的基本概念。对计算机的体系结构有基本的概念。如图1是本文简化的计算机结构,其核心是CPU和内存,其中CPU用于运行代码,而内存则用于存储程序代码和数据。输入输出设备可以简单地理解为我们电脑的鼠标、键盘和显示器。
图1计算机体系结构简图这里有一点需要注意的是,内存是被划分为一个一个单元的,我们可以简单的理解为一个单元的大小是1字节(Byte,也即8位),如图1右边所示。并且,内存以该单元为单位进行编址,也就是定义内存的地址。这个地址可以参考我们日常的门牌号,这样CPU才知道数据访问的位置。
环境搭建
本文进行C语言开发基于Linux环境进行,之所以使用Linux是因为该环境下不需要安装负载的工具。本文假设采用的Linux发行版是Ubuntu系统,如果不清楚如何安装该系统可以参考本号的《最详细的图文安装Ubuntu教程|如果还不会你找我》一文。具体安装可以在虚拟机上安装,这样使用起来比较方便。
具备该操作系统环境之后,需要安装C语言源代码的编译工具。在Linux的编译工具是gcc,在Ubuntu上可以非常方便的安装该工具。执行如下命令即可安装该工具:
sudoapt-getbuild-depgcc
或者执行如下命令也可以安装该工具:
sudoapt-getinstallbuild-essential
安装完成后,执行如下命令可以验证是否安装成功:
gcc--version
如图提示版本信息则代表安装成功了,如果提示命令不存在则代表安装失败了。
第一个程序
为了有一个整体的认识,本文先给一个可以运行的完整的代码。如下是一个可以直接编译运行的C语言代码。
#includestdio.hintmain(void){printf(helloworld!\n);}
可以将上述代码在Windows上通过记事本保存为一个hello.c文件,然后拷贝到Linux系统中。或者如果会使用Linux下的vim工具的话,通过该工具创建一个hello.c文件,并将上述代码拷贝到该文件中,然后保存。然后在hello.c文件所在的目录下执行如下命令:
gcc-ohellohello.c
这样就会生成一个可执行文件,这个文件类似于Windows下面的*.exe文件。在该目录下,输入如下内容就可以执行该可执行文件:
./hello
执行后可以看到输出的内容(helloworld!)。至此,我们完成了第一个C语言程序的开发、编译和运行。
第一个程序的解释
C语言是编译型的语言,也就是说起源代码需要编译成可以被CPU识别的格式(机器码)之后,才能在Linux上运行。与之相对的是解释型的语言(例如Python,PHP等),这种语言可以直接在解释器中运行,不需要编译生产其它格式的文件。
第一行(#includestdio.h)表示我们需要引用一个在其它地方已经实现的功能(也就是后面使用printf)。所有语言都提供了一下“轮子”,这样我们就不用从零开始。我们可以借用这些“轮子”拼装成我们的“汽车”,这样能大量的节省工作量。
第二行(intmain(void))是C语言的入口,每个C语言程序都有一个这样的入口函数(后面解释什么是函数),而且必须是这个格式。这里int是该函数的返回值,表示是一个整型数;main是函数的名称,这个是固定的,不能变化;void是参数。
第三行({)和第五行(})是函数的开始和结束标识,每个函数都包含这两个标识。
第四行(printf(helloworld!\n))是一个函数调用,这个函数有其它程序实现的,这里我们借用了该功能。printf的功能是向终端打印内容,因此我们执行程序是会在终端看到helloworld!字符串。
有些细节还没讲到,可以先照着葫芦画瓢。
今天先到这,后续文章介绍数据类型、变量、控制语句和函数等内容。