从头开始学习 C 语言——C Primer Plus读书笔记1

C 语言基本介绍

C 语言历史

丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(Ken Thompson)开发 Unix 时在 B 语言基础上设计了 C 语言,应用于操作系统、驱动、数据库等底层开发,是一门偏底层的编程语言。

C 语言标准

  1. 最初并没有所谓的 C 标准,第一版公认的 C 标准是 The C Programming Language 的第一版(也称 K&R C 或经典 C)。
  2. ANSI 于 1989 年公布的一套新标准定义了 C 语言和 C 标准库(ANSI C),ISO 在 1990 采用该标准(ISO C),因此 ANSI/ISO 标准通常称为 C89 或 C90。
  3. 1999 年 ANSI/ISO 联合委员会在遵循 C90 基础上最终发布 C99 标准。
  4. 2011 年发布 C11 标准,委员会从此开始不那么强调「信任程序员」。

C 语言的执行流程

源代码 -> 预处理 -> 编译 -> 汇编 -> 链接 -> 可执行文件

预处理器:处理头文件、宏定义等,生成预处理后的源码文件。

编译器:将源代码翻译汇编语言,同时还会检查源码中的一些错误。

汇编器:将汇编语言转为机器语言(二进制代码)。

链接器:将源代码和 C 的库函数链接。

大多数系统中,编译器运行链接器;C 编译器将源代码和 C 的库函数合并成最终的程序。

一个典型的 C 程序

#include <stdio.h>
int main(void)
{
    printf("HelloWorld!\n");
    return 0;
}

标准 C 定义的 main 函数两种写法:C11 5.1.2.2.1 Program startup

int main(void){/*...*/}
int mian(int argc,char *argv[]){/*...*/}

如果使用 ANSI C 之前的编译器,需要省略 void。如果使用新标准编译器,例如 C11 中 main() 这种写法是不受支持的。

C 程序顶部的信息集合称为头文件,#include <stdio.h> 是一条预处理指令,就是将 stdio.h 这个文件的内容「复制粘贴」到源代码中。

错误

语法错误:不遵循 C 语言语法,将无法通过编译。

语义错误:遵循 C 语言语法,但结果不正确。

程序状态

程序执行过程中,某定点上所有变量值的集合,时计算机当前状态的一个快照。

关键字和保留字

对于 C 语言有特殊含义,不能用作标识符。

C 语言的一些规则

注释

注释是帮助理解代码的自然语言,有三种:

/* 第一种注释:单行 */
/*
    第二种注释:多行
*/
// 第三种注释:单行,C99 新增

变量声明

在 C 语言中,变量必须先声明再使用。C99 开始可以在任意位置声明后再使用,此前必须在代码块的顶部。

声明变量就是将一块内存预留给该变量存储数据。

命名

使用数字、字母和下划线命名,但第一个字符不能为数字。C90 命名长度只允许 6 个字符,C99 和 C11 允许更长的命名,但编译器只识别前 63 个字符,超出将会被截断。

OS 和 C 库常以一个或两个下划线为开头命名,因此尽量不要使用下划线作为命名开头,以防止命名冲突。

函数声明(函数原型)

void func(void);

C90 标准新增函数原型,是一种声明形式,指明了函数名、属性。早期的 C 语言支持仅指定返回类型,无需描述参数。

C 标准建议为程序中用到的所有函数提供函数原型。

总结

C Primer Plus 前两章是对 C 语言的入门概念及后续一些章节知识的概述,对于 0 基础而言非常不友好。作为 0 基础初学者,不懂可以接着往下读,不建议死磕为什么。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值