Learning C Primer Plus | Overview

第一章 概览

起源

贝尔实验室的Dennis Ritchie在1972年开发了C,当时他正与Ken Thompson一起设计UNIX操作系统。
C来自于Thompson的B语言。

C语言的特点

  • 设计特性:C是融合了控制特性的现代语言,其设计使得用户可以自然地采用自顶向下的规划、结构化的编程,模块化的设计。这种做法使得程序更可靠,更易懂。
  • 高效性:设计上利用了当前计算机能力的优点。C程序往往很紧凑且运行速度快,可以细调获得最大速度及内存使用率。
  • 可移植性:在一个系统上编写的C程序经过很少或不修改就可以在其他系统运行。如果修改是必要的,通常只需改变伴随主程序的一个头文件的几项内容即可。
  • 强大的功能和灵活性: Python,Perl,BASIC等的编译器和解释器都是C编写的。
  • 面向编程人员:允许访问硬件,操纵内存中的特定位,具有丰富的运算符,能简洁地表达自己的意图。
  • 缺点:自由程度高,增加风险,可能会编写极难理解的代码。

计算机工作的基本原理

CPU处理一条一条机器指令,每个寄存器保存一个数,一个寄存器保存下一条指令的内存地址。

高级计算机语言与编译器

C语言程序更易于人类理解,但是机器无法理解,需要使用编译器将其翻译为机器语言。

使用C语言的七个步骤

  1. 定义程序目标
  2. 设计程序
  3. 编写代码
  4. 编译
  5. 运行程序
  6. 测试和调试程序
  7. 维护和修改程序

编程机制

源文件: 文件中包含程序员使用任何语言编写的代码。
目标代码:包含着机器语言代码,它并不需要是完整的程序代码。
可执行文件:包含组成可执行程序的全部机器语言代码。

源文件被编译器翻译为目标代码,链接器再把(库和启动代码与已编译的源代码)目标代码连接生成可执行文件。


Learning C Primer Plus | Overview_第1张图片
Learning C Primer Plus | Overview_第2张图片
UNIX系统编译

第二章 C语言概述

简单的C语言实例

#include
int main(void)
{
  int num;
  num = 1;
  printf("I am a simple ");
  printf("computer.\n");
  printf("My favorite number is %d because it is first.\n",num);
  return 0;
}

#include指示和头文件

C编译器在编译前要对源代码做一些准备工作:称为预处理(preprocessing)
#include语句是C预处理指令(preprocessor directive)实际上是一种剪切和粘贴操作,方便多个程序共用信息。

语言标准

1989年C89 (ANSI C)
1990年C90 (ISO C)
1994年C99 (ANSI/ISO)

基本概念

  • main函数

main() C90标准勉强支持,C99不支持。
main函数返回值是返回给操作系统的。
int main() C99标准,括号留空默认为void,与老版本保持兼容性。
C90支持函数原型即void butler(void);,而早起的C只能指定返回类型而省略参数描述void butler();

  • 变量
    声明时变量分配了空间(有地址),如果没有进行赋值则它的值是不确定的。
#include
int main()
{
        int unknown;
        printf("%ld\n",sizeof(unknown));
        printf("%p\n",&unknown);
        printf("%d\n",unknown);
        unknown = 1;
        printf("%p\n",&unknown);
        printf("%d\n",unknown);
        return 0;
}

输出为

4
0x7fffc21c2124
32767
0x7fffc21c2124
1

变量名区分大小写,选择有意义的变量名有利于可读性。
变量名由大小写字母,数字和下划线组成,不能是关键字,不能是数字和下划线(为了避免和C库冲突)开头。

  • 注释
    C语言默认注释是/* 注释内容 */,C99增加了`//``与Java和C++保持一致。

  • 调试

    • 语法错误:一般先检查前面一两个错误。
    • 语义错误: ①手工追踪 ②使用printf语句 ③使用调试器
  • 其他
    C规定在开始处先声明变量,C99标准允许使用时再分配变量。
    ;分号是语句的一部分。
    \t表示Tap\b表示退格符。

你可能感兴趣的:(Learning C Primer Plus | Overview)