最近学习C语言,对C指针不是很理解,翻阅了知乎上的一些学习经验,推荐了一本日本作者前桥和弥的《征服C指针》的书,粗粗翻阅了一下,感觉对自己很有帮助,借此博客记录下学习笔记和自己的一些理解,也希望和对此感兴趣的朋友共勉。
几点补充:
- 使用了原文(翻译版)的章节题目
- 没有涉及指针等重点内容的都一掠而过
- 作者的语言诙谐、专业性较强,强烈建议阅读原书
第1章 从基础开始—预备知识和复习
1.1 C是什么样的语言
1.1.1 比喻
- 为了解决眼前问题,由开发现场的人发明(即由系统开发者发明,用于解决实际问题)
- 使用方便
- “看上去不怎么顺眼”(可能阅读他人代码有难度)
- 如果不熟悉的人稀里糊涂地使用了它,难免会带来“悲剧”的语言
1.1.2 C的发展历程
略
1.1.3 不完备和不统一的语法
要点
提高编译器的警告级别
不可无视或者制止编译器的警告
1.1.4 ANSI C
ANSI C
1989年,ANSI(American National Standard Institute,美国国家标准学会)通过的C语言的标准规范
ISO-IEC 9899-1990
C的国际标准
GB/T 15272-94
中国国家标准(ISO-IEC 9899-1990的中文翻译版)
1.1.5 C的宝典—K&R
The C Programming Language
简称K&R
Brian Kernighan & Dennis Ritchie(C语言之父)
1.1.6 C的理念
- 请信任程序员(Trust the programmer)
- 不要阻止程序员去做需要做的工作(Don’t prevent the programmer from doing what needs to be done)
- 保持语言的小巧和简单(Keep the language small and simple)
- 为每一种操作只提供一种方法(Provide only way to do an operation)
- 就算不能保证可移植性,也要追求运行效率(Make it fast, even if it is not guaranteed to be portable)
C是危险的语言,C是是抱着“程序员万能”的理念设计出来的
在 C 的设计中,优先考虑的是:
- 如何才能简单地实现编译器(而不是让使用 C 的人们能够简单地编程)
- 如何才能让程序员写出能够生成高效率执行代码的程序(而不是考虑优化编译 器,使编译器生成高效率的执行代码)
安全性问题被完全忽略了
1.1.7 C的主体
Pass
1.1.8 C是只能使用标量的语言
标量(scalar)
包括char、int、double、枚举型等数值类型,以及指针
聚合类型(aggregate)
像数组、结构体和共用体这样的将多个标量进行组合的类型
下一节我们就要正式进入指针的学习啦~