为什么阅读《C Primer Plus》第六版
准备好好研究下redis源码,但是很久没用c语言写代码了,平时工作主要用java和js。所以准备重新阅读学习下c语言经典书籍:C Primer Plus。更好的阅读redis源码。
读书笔记
C语言的起源
C语言1972年由贝尔实验室的Dennis Ritch和 Ken Thomepson(我的偶像)在开发unix操作系统时候设计的。
C的优点:
1. 强大的控制结构
2. 快速
3. 代码紧凑-程序更小
4. 可移植到其他计算机
C语言的缺点:
1. c语言的指针使用,带来的一些编程错误难以觉察。
2. 容易编写出让人极其费解的代码。
C语言的应用范围:
1. pc应用
2. 计算机游戏
3. 嵌入式系统
4. 操作系统
5. 电影特效
6. 计算机语言
yups: C语言不适合做web应用开发,也不太适合用来写脚本。不适合只是因为开发效率不够高效,但不代表做不了。
C语言概述
一个简单demo
//文件名 demo.c
#include <stdio.h>
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;
}
mac下输入gcc demo.c,会最终编译生成a.out文件,运行./a.out,输出
I am a simple computer.
My favorite number is 1 because it is first.
以上是一个比较典型的C程序了。
- #include <stdio.h> 这行代码告诉编译器把stdio.h中的内容包含在当前程序中。stdio.h是C编译器软件包的标准部分,提供键盘输入和屏幕输出的支持。
- int main(void) 是C程序的执行入口(int和void是ANSI C的规范)
- {}是main函数内部的开始和结束。
- int num 声明使用一个名字为num的变量,而且num是整数int类型。
- num = 1 赋值表达式语句
- printf("I am a simple ") 调用printf函数,效果是会在屏幕中显示I am a simple
- printf(“computer.\n”); \n表示换行,光标移至下一行。
- printf(“My favorite number is %d because it is first.\n”,num); num值代替%d, %d表示是整数类型。
- return 0; return语句
变量命名
和java类似,可以用小写字母、大写字母、数字和下划线来命名,但是第一个字符必须是字母或下划线,不能是数字
提高程序可读性的技巧
1. 有意义的函数名和变量名。
2. 写注释,但是定义好的变量名,可以减少一部分注释,防止啰嗦。
3. 空行分隔概念上的多个部分。
多条声明
int feet, fathoms;等价于
int feet;
int fathoms;
关键字和保留标识符
|
关键字 |
说明 |
|
auto |
声明自动变量 |
|
short |
声明短整型 |
|
int |
声明整型 |
|
long |
声明长整型 |
|
float |
声明单精度浮点型 |
|
double |
声明双精度浮点型 |
|
char |
声明字符型 |
|
struct |
声明结构体类型 |
|
union |
声明联合(共用)类型 |
|
enum |
声明枚举类型 |
|
typedef |
重命名数据类型 |
|
const |
声明只读变量 |
|
unsigned |
声明无符号类型 |
|
signed |
声明有符号类型 |
|
extern |
声明外部变量 |
|
register |
声明寄存器变量 |
|
static |
声明静态变量 |
|
volatile |
说明变量在程序执行中可隐含的被改变 |
|
void |
声明函数无返回值或者无参数,声明无类型指针 |
|
if |
条件语句 |
|
else |
条件语句否定分支(与if连用) |
|
switch |
用于开关语句 |
|
case |
开关语句分支 |
|
default |
开关语句中默认分支 |
|
for |
循环语句 |
|
do |
循环语句循环体 |
|
while |
循环语句的循环条件 |
|
continue |
结束当前循环,开启下一轮循环 |
|
break |
跳出当前循环 |
|
goto |
无条件跳转语句 |
|
sizeof |
计算数据类型长度 |
|
return |
子程序返回语句(可以带参数,也可以不带参数)循环条件 |