为什么阅读《C Primer Plus》第六版准备好好研究下redis源码,但是很久没用c语言写代码了,平时工作主要用java和js。
所以准备重新阅读学习下c语言经典书籍:C Primer Plus。
更好的阅读redis源码。
// talkback.c -- 演示与用户交互
#include
#include // 提供strlen()函数的原型
#define DENSITY 62.4 // 人体密度(单位:磅/立方英尺)
int main()
{
float weight, volume;
int size, letters;
char name[40]; // name是一个可容纳40个字符的数组
printf("Hi! What's your first name?\n");
scanf("%s", name);
printf("%s, what's your weight in pounds?\n", name);
scanf("%f", &weight);
size = sizeof(name);
letters = strlen(name);
volume = weight / DENSITY;
printf("Well, %s, your volume is %2.2f cubic feet.\n",
name, volume);
printf("Also, your first name has %d letters,\n",
letters);
printf("and we have %d bytes to store it.\n", size);
return 0;
}
运行输出
Hi! What's your first name?
Christine
Christine, what's your weight in pounds?
154
Well, Christine, your volume is 2.47 cubic feet.
Also, your first name has 9 letters,
and we have 40 bytes to store it.
字符串是一个或多个字符的序列: “Helo World!!”
c语言用char类型的数组保存字符串,通过字符\0标记字符串的结束。
所以40个存储单元,实际只能存储39个字符大小。
所以"x"和’x’的区别: "x"实际上由两个字符组成:'x’和\0
char name[40];
name = “Serendipity”
strlen -> 11, 空字符不计入
sizeof -> 40
3.14159 * d , pi * d
变量名比数字表达的信息更多
多处使用,改动也方便。
支持 float pi;
pi = 3.14159;
但是变量容易被误改,通过C预处理器:
#define pi 3.14159
编译程序时候,所有pi都会替换成3.14159
注意末尾不加分号。
C90标准新增了const关键字,限定变量为只读。
const int MONTHS = 12; //MONTHS不可更改,值为12
scanf函数每次读取一个字符,跳过所有的空白字符,
直至遇到第一个非空白字符,如果是%s,会直到遇到下一个空白结束。
scanf(“%d,%d”,&n,&m);
用户将输入一个数字、一个逗号、再输入一个数字。
printf和scanf第一个参数中的转换说明必须与后续参数中的值相匹配。
可以使用转换说明控制输出的外观:字段宽度、小数位和字段内的布局。
和java一样的就不记了。
sizeof运算符以字节为单位返回运算对象的大小,
size_t是语言定义的标准类型,
C的typedef机制
typedef double real;
real就是double的别名。
可以声明real deal;
a_post = a++; //使用a值之后,递增a
pre_b = ++b; //使用b值之前,递增b
不要自作聪明,一次用太多运算符,自己都会糊涂。
legs = 4 表达式
legs = 4; 一条语句
最简单的语句是空语句:
; //空语句
mice = 1.6 + 1.7;
mice = (int)1.6 + (int)1.7;