1初识C语言
1.1起源
----------------------------------------------------------------------------------------------
1972年贝尔实验室设计,在B语言基础上设计出来的。
1.2 C语言的特点
----------------------------------------------------------------------------------------
结构化和模块化的语言特性,
高效性:代码紧凑,速度超快,具有汇编的控制能力
可移植性:但可能存在细微的修改
灵活性:指针赋予了它灵活而强大的功能
面向程序员:为满足程序员需求而设计的
1.3 C语言的缺点
他的缺点就是他的优点,
C的精华优点就是指针,那么他的缺点也是指针
指针造成的错误难以察觉,导致程序安全性不可控
1.4 计算机的工作原理
---------------------------------------------------------------
计算机主要部件:
CPU:高速计算器,负责绝大部分的运算。主要是运算指令
内存:存储运行的程序和文件
硬盘:永久的存储数据的设备。
CPU工作原理:
CPU从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令。
CPU上有若干个寄存器,寄存器就是一个比内存的读写速度还要快的特殊内存
一个寄存器可以存储一个数字,一般都存储下一条指令的内存地址
CPU使用该地址获取和更新下一条指令
获取指令后CPU会在另一个寄存器中存储该指令,
然后更新第一个寄存器存储下一条指令的地址。
CPU能理解的指令非常有限,许多指令都是用于请求计算机吧一个数字东一个位置移动到另外一个位置,例如寄存器和内存之间的移动。
例如计算机要完成两数相加就得分成类似的以下几个步骤:
从内存位置2000上把一个数字拷贝到寄存器1
从内存位置2004上把一个数字拷贝到寄存器2
把寄存器2中的内容与寄存器1中的内容相加,把结果存储在寄存器1中
把寄存器1中的内容在拷贝到内存位置2008
而我们要做的就是要用数字码来表示以上的每个步骤。
当然不在需要去写机器码了,我们只关注C语言代码的逻辑,编译器会将我们的代码编译为计算机能读懂的步骤。
1.5 高级计算机语言和编译器
-------------------------------------------------------------
计算机计算两个数相加要是写成机器语言比上面的操作还要复杂,
于是人类发明了一个东西叫做编译器。比如我要计算两个数相加直接写:
number3=number1+number2;
编译器会把这个代码编译成计算机能读懂的机器指令。人类就可以值关注我们需要做的事情。我们进行高级的思维活动,让计算机去做那些冗长乏味的细节工作
1.7使用C语言的7个步骤
--------------------------------------------------------------
1 定义程序的目标
2设计程序
3编写代码
4编译
5运行
6测试和调试
7维护和修改
1.8 编程机制
------------------------------------------------------------------------------
C编程的基本策略是,用编译器把源代码转换为可执行文件(包括可直接运行的机器码)
这一步骤实际是通过编译和链接两个步骤来完成的:
首先编译器把源代码转换为中间代码,链接器把中间代码和其他代码合并,然后再生成可执行文件!
中间文件虽然包含了机器码,但是他还不能直接运行,因为中间文件中存储的很多都是编译器翻译的源代码,不是一个完整的程序。
大致过程通过下图你就知道了
1.8.2 Unix系统上编译
源文件以 .c为后缀,区分大小写
Unix编译器调用语言定义的cc命令,但是这已经退出历史舞台了。
Unix系统提供的C编译器通常来自一些其他源,然后以cc命令作为编译器的别名。因此虽然在不同的系统中会调用不同的编译器,但是我们仍然使用相同的命令即可编译
cc xxx.c
几秒钟后会打印编译结果,如果成功使用ls就会发现一个xxx.out的可执行文件。
只需要输入
xxx.out
程序就会运行了!
1.8.3 Linux系统上编译
Linux系统就是一个类Unix系统,因此他们对C的操作都几乎一样。
不同的是Linux使用的编译器是GNU计划提供的GCC编译器,命令是:
gcc xxx.c
需要注意的是安装Linux的时后如果没有安装GCC则必须安装,安装过程中会把cc作为gcc的别名。因此在Linux下使用cc也是可以的
至于Windows和mac下的我们就不说了