1.1 C语言的起源
1972年,贝尔实验室的丹尼斯·里奇和肯·汤普逊在开发Unix系统时设计了C语言,C语言设计的初衷是将其作为程序员使用的一种编程工具,因此,其主要目标是成为有用的语言。
C,C++,Java,goPython……
1.2 选择C的理由
优点:强大的控制结构,代码紧凑--程序更小(相比而下内存小),快速,可移植到到其他计算机。
1.2.1 设计特性
C语言的设计理念让用户能轻松地完成自顶向下的规划,结构化编程和模快化设计。X语言编写的的程序更易懂,更可靠。
1.2.2 高效性
C语言具有通常是汇编语言才有的微调控制能力。可根据具体情况微调程序以获得最大运行速度或最有效地使用内存。C语言对硬件控制能力强。
1.2.3 可移植性
一种系统中编写的C程序稍作修改(只需简单更改主程序头文件中的少许即可)或不做修改就能在其他系统运行。Linux中的C可移植到win或者稍作修改移植到win中也可以运行。汇编语言移植性就很差。Java移植性就更强。C编译器是把C代码换成计算机内部指令的程序。
C语言与Unix关系密切,C为了开发Unix而设计的。Unix由C写出来的。
win和linux,unix和mac的编译器不同,但可以把一套C源代码翻译成不同系统能识别的零幺串(计算机指令)。
1.2.4 强大而灵活
Unix系统大部分都是X写出来的,其他语言的编译器和解释器都是用C写出来的。C程序可以用于解决物理学和工程学的问题,甚至用于制作电影的动画特效。
1.2.5 面向程序员
程序员利用C可以访问硬件(微调控制能力),操控内存中的位(数据)。C很灵活优点是许多任务用C来处理都非常简介,缺点是可能会犯一些莫名其妙的错误。
1.2.6 缺点
C语言比较自由,C使用指针时,设计指针的编程错误往往难以察觉。可以写出令人费解的代码,写写也无妨,万一比赛能用上呢?
1.3 C语言的应用范围
写操作系统Unix,编写计算机游戏,放入嵌入式系统(内存少对硬件,cpu要求低),机器人工厂,星球大战电影,PC应用,计算机语言,卢卡斯公司……
学习C对我们来说可在以后工作直接使用或者更好的学习其他语言。不一定非得计算机才能使用C语言。C++等虽然面向对象的好语言,但C任然是软件行业中的核心技能。
1.4 计算机能做什么没基础不理解
计算机包括:中央处理单元cpu,随机存取内存ram,永久内存存储设备硬盘,外围设备:键盘,鼠标,触摸屏,监视器……提供人与计算机的交互。
cpu可将内存中的一条一条指令拿到cou中执行,并在内存中生成一些数据存储在硬盘中。
1.5高级计算机语言和编译器
高级语言将零幺串抽象成程序,高级语言写的是高级指令,一堆无法理解的无用数据。
编译器:把高级语言程序翻译成计算机能理解的机器语言指令集的程序。
使用合适的编译器或编译器集,可把一种高级语言程序换成供各种不同类型cpu使用的机器语言程序
1.6 语言标准
C语言比其他语言更依赖库,因此需要一个标准库。由于缺乏官方标准,Unix实现提供的库已成为了标准库。
1.6.1 第一个ANSI/ISO C标准
C89:ANSI于1989年批准该标准 C90:ISO于1990年批准该标准
设置C语言并保持C的精神列了以下几点:
·信任程序员
·不要妨碍程序员做需要做的事
·保持语言精炼简单
·只提供一种方法执行一项操作
·让程序运行更快,即使不能保证其可移植性
1.6.2 C99标准
·国际化:支持国际化编程
·弥补缺陷:调整现有实践致力于解决明显的缺陷
·提高计算的实用性:适应科学和工程项目中的关键数值计算
1.6.3 C11标准
1.7 使用C语言的7个步骤
C是编译型语言,将一篇中文翻译成英文再在广播中读出来
以前的是解释型语言,在广播中翻译一条读一条。
(1).定义程序的目标
(2).设计程序
(3).编写代码
(4).编译
(5).运行程序
(6).测试和调试程序
(7).维护和修改程序
1.7.1 第一步:定义程序的目标
用一般术语来描述问题
1.7.2 第二步:设计程序
如何用程序来完成他
1.7.3 第三步:编写代码
编写源代码,添加注释
举例:
#include <stdio.h>
int main(void)
{
int dogs;
printf("How many dogs do you have?\n");
scanf("%d", &dog);
printf("So you have %d dog(s)!\n", dogs);
return 0;
}
1.7.4 第四步:编译
用编译器来编译源代码,编译器还会检查C语言程序是否有效。
学会理解特定编译器的警告和错误
1.7.5 第五步:运行程序
有些系统要输入可执行文件的文件名,或者运行命令才能运行程序。
1.7.6 第六步:调试和调试程序
测试程序是否正确,调试程序是否在特点编译器中是否有错误。
真钞定理:真钞只有一种,假钞千种万种,我们要达到真钞一种
1.7.7 维护和修改代码
有错或者扩展其用途时要修改代码
1.7.8 说明
磨刀不误砍柴工,先规划再动手,用笔和笔记录下程序的目标和设计框架。
1.8 编程机制
程序员编写的叫源代码有个名字xxx.c基本名+扩展名。
1.8.1 目标代码文件,可执行文件和库
编译器将源代码编译成中间代码,链接器再将中间代码和其他代码最终生成可执行文件最后丢给cpu执行。
中间文件不一定是01机器代码,可以是一些其他我们看不懂的文件格式
编译器把源代码转换为目标代码,目标代码不能直接运行,通过链接器和其他代码推送给cpu才能运行。
目标代码缺失启动代码,启动代码充当房间的门。
目标代码还缺少库函数,库中有许多函数的目标代码。
1.8.6 集成开发环境(windows)
C free编译器
1.11 本章小结
爱上C