读书笔记之C Primer Plus 5

为什么阅读《C Primer Plus》第六版

准备好好研究下redis源码,但是很久没用c语言写代码了,平时工作主要用java和js。
所以准备重新阅读学习下c语言经典书籍:C Primer Plus。
更好地阅读redis源码。


第10章 数组和指针

数组

  • 数组的编号从0开始
  • 新语法初始化数组:
  int powers[4]={1,2,3,4}; //从ANSI C开始
  • 只读数组 const int days[12] 只获取数据,不能把新值写入。
  • 使用数组前必须先初始化它。
  • 如果部分初始化数组,剩余会初始化为0.

多维数组

  • float rain[5][12] //rain是一个内含5个元素的数组
  • 初始化多维数组
const float rain[5][12]=
{
    {4.3,1.1,3.2,4.3,1.5}
};

指针和数组

  • 数组名是数组首元素的地址 dates == &dates[0] // true
  • c语言的灵活
dates+2 == &dates[2]; //true
*(dates+2) == dates[2]; //true

函数、数组和指针

  • 只有在函数原型或函数定义中,才可以用int ar[] 代替int* ar;

指针操作

  • 赋值:可以把地址赋给指针。
  • 解引用:*运算符给出指针指向地址上存储的值
  • 取址: &运算符给出指针本身的地址。
  • 支持递减递增指针
  • 可以计算两个指针的差值
  • 千万不要解引用未初始化的指针
  • 比较:前提两个指针都指向相同类型的对象。

第十一章 字符串和字符串函数

const char * pt1 = "Somethings";
const char ar1[] = "Somethings";
//两者相同

pt1指针通过 *(pt1) == '\0' 来判断是否到字符串结尾。

字符串输入

  • gets()函数读取一行输入。输入的内容容易超过给定的大小,C99不建议使用。
  • fgets()函数第2个参数指明了读入字符的最大数量,第3个参数指明要读入的文件。
  • gets_s()函数与fgets()类型,但是只从标准输入中读取数据,所以不需要第3个参数。

字符串输出

  • puts(),只需把字符串的地址作为参数传递给它,就能输出信息。遇到空字符时停止输出。
  • fputs(),第2个参数指明要写入数据的文件。
  • 与puts不同,fputs不会在输出的末尾添加换行符。
  • printf()可以格式化不同的数据类型。

字符串函数

  • strlen()函数统计字符串的长度。
  • strcat()函数把第2个字符串的备份附加在第1个字符末尾。新的字符串作为第一个字符串。
  • strncat()
strncat(bugs,addon,13)
//把addon字符串的内容附加到bugs,在加到第13个字符串或遇到空字符时停止。
  • strcmp()比较字符串是否相等。while(strcmp(str1,str2)!=0)。相等是0,比较"A"和"B"返回-1,比较"B"和"A"返回1.
  • strncmp()比较字符串中的字符,第3个参数可以指定比较的字符数。
  • strcpy()拷贝整个字符串。第2个参数指向的字符串被拷贝至第一个参数指向的数组中。程序员确保足够空间容纳。
  • strncpy()相对更安全,第3个参数指明可拷贝的最大字符数。
  • sprintf() 声明在stdio.h
  • sprintf() 把数据写入字符串中。

命令行参数

  • int main(int argc,char **argv)
  • char **argv 与 char *argv[] 等价。

字符串转数字

  • atoi()函数把字母数字转换成整数,可以把"42regular"转换为42
  • strtoul() 把字符串转换成unsigned long类型的值
  • strtod() 把字符串转换成double类型的值。

第12章 存储类别、链接和内存管理

作用域

作用域描述程序中可访问标识符的区域。一个c变量的作用域可以是块作用域、函数作用域、函数原型作用域或文件作用域。

链接

c变量有3种链接属性:外部链接、内部链接或无链接。

存储期

c对象有4种存储期:
静态存储期、线程存储期、自动存储期、动态分配存储期。

寄存器变量

  • register 可声明寄存器变量。但是只是一种请求,编译器做判断,可能不会如你所愿。

块作用域的静态变量

  • 具有文件作用域的变量自动具有静态存储期。
  • 计算机在多次函数调用之间会记录他们的值
  • 以存储类别说明符static声明这种变量。
  • 不能在函数的形参中使用static

外部链接的静态变量

  • 为了指出该函数使用了外部变量,可以在函数中用关键字extern再次声明。
 extern char coal; /*如果Coal被定义在另一个文件*/
如果省略掉extern关键字,相当于创建了一个自动变量。

存储类别和函数

  • 一般函数声明都默认为extern
  • static dobule beta(int,int)以static存储类别说明符创建的函数属于特定模块私有。

分配内存:malloc()和free()

  • malloc()接受一个参数:所需的内存字节数。该函数会找到合适的空闲内存块,返回内存块的首字节地址。
double * ptd;
ptd = (double *) malloc(30 * sizeof(double));

以上代码为30个double类型的值请求内存空间,并设置ptd指向该位置。

  • free() 释放malloc()申请的内存
  • calloc()函数分配内存,返回指向void的指针。还有一个特性:块中的所有位都设置为0
  • free()也可以释放calloc()分配的内存
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容