(本文为原创,版权归作者所有)
C语言是一种通用的命令式语言,是迄今为止最成功的计算机语言(之一)。使用C语言的场景十分广泛,从操作系统到各式各样的应用和算法,从嵌入式系统到大型计算机,C语言几乎无处不在。比如Linux/Unix的内核大部分是由C语言编写的,著名的版本控制软件Git是由C语言完成,很多高级语言的解释器或者虚拟机也是基于C语言的。大量的高级语言都从C语言里借鉴了一些特性,无论是语法还是控制逻辑都与C语言相似,比如C++、C#、Object C、Java、JavaScript、GO、PHP、Python等等。
从设计上,C语言是对机器语言和冯·诺依曼架构的有效抽象,因此它足够简洁灵活,同时又易于使用。下面让我们来看一下C语言都提供了哪些抽象,而这些抽象又如何帮助程序员进行程序设计的。
我们先从变量和类型谈起。
计算机软件最重要的工作就是处理数据。我们看到的形形色色的程序,归根结底,都是在处理输入数据,并产生输出数据。计算机的CPU只能处理二进制的数,因此无论程序如何与人交互(声音、图像或者动作),所有的输入和输出都需要转化为数的表示。如何高效的表达数据,是计算机语言最重要的特性之一。
在一个典型的32位计算机系统里,程序的数据存储在内存的存储单元里,每个存储单元代表一个字节(byte),也就是一个8位的二进制数,它可以由一个32位内存地址访问并表示,在C语言里这个地址也可以被称为指针。
如果使用汇编语言或者机器语言编程,要读写一个字节,程序员需要显式的给出这个字节的内存地址,程序才能访问它,这个过程既