第一章初识C语言


title: 第一章 初识C语言
author: HardyDragon
tags: C Notes


第一章 初识C语言

1.1 C语言的起源

1.2 选择C语言的理由

1.2.1 设计特性

1.2.2 高效性

1.2.3 可移植性

1.2.4 强大而灵活

1.2.5 面向程序员

1.2.6 缺点

1.3 C语言的应用范围

1.4 计算机能做什么

1.5 高级计算机语言和编译器

1.6 语言标准

1.6.1 第一个ANSI/ISO C 标准

1.6.2 C99 标准

1.6.3 C11标准

1.7 使用C 语言的7个步骤

1.7.1 第一步: 定义程序的目标

1.7.2 第二步:设计程序

1.7.3 第三步:编写代码

1.7.4 第四步:编译

1.7.5 第五步:运行程序

1.7.6 第六步:测试和调试程序

1.7.7 第七步:维护和修改代码

1.7.8 说明

1.8 编程机制

1.8.1 目标代码文件、可执行文件和库

1.8.2 UNIX系统

1.8.3 GNU编译器集合和LLVM项目

1.8.4 Linux系统

1.8.5 PC的命令行编译器

1.8.6 集成开发环境(Windows)

1.8.7 Windows/Linux

1.8.8 Macintosh 中的 C

1.9 本书的组织结构

1.10 本书的约定

1.10.1 字体

1.10.2 程序输出

1.10.3 特殊元素

1.11 本章小结

1.12 复习题

1.13 编程练习


1.1 C语言的起源

​ 1972年,贝尔实验室的丹尼斯和汤普逊在开发UNIX操作系统时设计了C语言,它是在汤普逊发明的B语言基础上设计。

1.2 选择C语言的理由

  • 设计特性

    便于实践,程序易懂可靠。

  • 高效性

    C 语言具有 汇编 才有的微调控能力,可以根据不同情况微调程序获得最大运行速度和最有效使用内存。

  • 可移植性

    在一种系统编写的C语言可以稍作修改或不修改就可以在其他系统上运行。C 语言和 UNIX 系统关系密切,通常UNIX会将C编译器作为软件包的一部分,安装Linux时也会安装C编译器。

  • 强大而灵活

    C 语言可以解决物理学和工程学的问题,甚至可以用于制作电影。

  • 面向程序员

    C 语言是为了程序员的需求设计的,C 语言不想C++那么严格,有许多函数被封装在库内。

  • 缺点

    C 语言虽然灵活,却会带来一些莫名其妙的错误,尤其是指针的错误,同时C语言由于运算符很多,可以将代码写的十分复杂。

1.3 C语言的应用范围

​ 软件开发文字处理程序、电子表格、编译器、嵌入式系统编程…C语言编写的程序高效且易移植方便修改。C++是C的超集,在C的基础上嫁接了面向对象的工具(通过对语言建模适应问题)。

1.4 计算机能做什么

​ CPU的工作原理:从内存中获取并执行一条指令,然后从内存中获取并执行下一条指令。(tips:1GHZ的CPU可以一秒重复大约十亿次,so,CPU总能以令人惊叹的速度执行这些枯燥的工作,深藏功与名)CPU有许多寄存器用于存储数字(表示的是下一条指令的内存地址),CPU使用该地址获取和更新下一条指令,获取指令后,CPU在另一个寄存器中存储该指令,并更新第一个存储器存储下一条指令的地址。指令也是用数字形式存储在寄存器。机器语言通过指令控制计算机,比较麻烦。C是高级语言。

1.5 高级计算机语言和编译器

​ 高级语言比较便于人理解,对于不同的CPU指令集不同机器语言也不同来说,C语言通过编译器转换为对应的机器语言。相当于程序员进行高级的四维活动,编译器负责处理枯燥乏味的细节工作。这就是变相的压榨么?科技解放生产力。

1.6 语言标准

  • 第一个ANSI/ISO标准

    ANSI C => C89 (1989年发布)

    ISO C => C90 (1990批准)

  • C99标准 (1994修订)主要是国际化和完善

  • C11标准 (2011发布) C99 和C11有些出入,有些需要通过编译器设置才能使用

1.7 使用C 语言的7个步骤

  • 定义程序的目标

    明确目的,一般术语描述问题

  • 设计程序

    如何组织程序,目标用户是谁,准备花多少时间实现。应该注重使用一般术语描述问题,不是具体的代码。某些决策可能取决于语言的特性。

  • 编写代码

    将设计的程序翻译成C语言,这里才是真正需要使用到C语言的地方。

  • 编译

    编译的细节取决于编程的环境,编译器是将源码转化为可执行代码/机器语言/指令集的代码,由数字组成。C编译器负责把C代码翻译成特定的机器语言。此外,C链接器(一般是编译器运行的链接器)还将源码和C库的代码合并成最终的程序(用户可执行文件)。

  • 运行程序

  • 测试和调试程序

  • 维护和修改代码

  • 说明

    许多初学者经常忽略第一第二步,随着编写的程序越来越大,越来越复杂,跳过前两个步骤的往往可能会浪费更多的时间,磨刀不误砍柴工,应该养成先规划再动手编写代码的好习惯,用纸和笔记录下程序的目标和设计框架,这样在编写代码时候会更加得心应手,条理清晰。

1.8 编程机制

​ 有些系统要求c文件名不能过长。

  • 目标代码文件、可执行文件和库

    典型的C实现通过编译和链接将程序源码转化为可执行文件。编译器现将源码转化为中间代码,链接器再将中间代码和其他代码合并生成可执行文件。C 可以独立编译 一些单独的模块,稍后再用链接器合并已经编译的模块。如果只更改某个模块,不必因此重新编译其他模块。另外,链接器还会将编写的程序和已经编译过的库代码合并。

  • GNU编译器集合和LLVM项目

    GNU编译器 = > GCC 编译器 ,它的编译器紧跟C标准改动,有UNIX、Linux、windows版本。许多系统用cc作为gcc别名

    LLVM项目 Clang编译器 处理C代码

    cc -v 查看编译器及其版本

    gcc和clang可以选择不同的C标准版本进行编译

    gcc -std=c99 xx.c

    clang -std=c11 xx.c

  • Linux系统

    安装gcc后 gcc xx.c 编译即可;可以 cc 别名 代替gcc;

  • PC的命令行编译器

    C编译器不是Windows的软件包之一,可以免费下载Cygwin和MinGW进行编译。Cygwin类Linux窗口,MinGW在Windows窗口运行。

  • 集成开发环境(Windows)

    可能会遇到一个问题,执行编译过后的程序会一闪而过,为了方便查看结果,可以在程序return前加两行 getchar();

1.11 本章小结

C 语言可以很好的控制硬件,和其他语言相比方便移植,C是编译性语言,C编译器和链接器是把C语言源代码转化为可执行程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值