【学习笔记】C prime

内容主要介绍:有一定c语言基础后,在阅读书是对重点内容的摘要。

本文是我个人的笔记,内容可读性比较差

文档:C Prime 笔记.note链接:http://note.youdao.com/noteshare?id=a70a54dd45cbe442c96f57096141aa33

第十二章储存float * const pt; /* pt 是一个const指针 */ 创建的指针pt本身的值不能更改。 pt必须指向同一个地址, 但是它所指向的值可以改变。 下面的声明:
volatile 限定符告
 通常, 它被用于硬件地址以及在其他程序或同时运行的线程中共享数据。
restrict 关键字
 表明该指针是访问数据对象的唯一且初始的方式。
Atomic int hogs; // hogs 是一个原子类型的变量 atomic_store(&hogs, 12); // stdatomic.h中的宏

第十四章结构和其他数据类型struct、 union、 typedef
小结:函数名代表函数的地址, 可以把函数的地址作为参数传递给其他函数,然后这些函数就可以使用被指向的函数。
struct表示结构体 typedef表示类型
 如果初始化一个静态存储期的结构, 初始化列表中的值必须是常量表达式。 如果是自动存储期, 初始化列表中的值可以不是常量。
考虑下面的代码: struct book gift= {.value = 18.90, .author = "Philionna Pestle", 0.25}; 赋给value的值是0.25, 因为它在结构声明中紧跟在author成员之后。 新 值0.25取代了之前的18.9。 在学习了结构的基本知识后, 可以进一步了解结 构的一些相关类型

 结构名并不是结构的地址,
 伸缩数组只能有一个,在结构体的最后面,用malloc来分配地址 被称为是(stauct hack)
联合14.10
一种结构体的选择 表示有一辆车 他是在汽车公司的手下还是在用户的手下
枚举enum
enum spectrum {red, orange, yellow, green, blue, violet}; enum spectrum color;
如果要处理颜色, 使用red和blue比使用0和1更直观。
typedef(就是为了代码好看和通用)
 typedef由编译器解释, 不是预处理器 typedef定义中用大写字母表示被定义的名称
 typedef并没有创建任何新类型, 它只是为某个已存在的类型增加了一个方便使用的标签。
函数和指针
void ToUpper(char *); // 把字符串中的字符转换成大写字符 ToUpper()函数的类型是“带char * 类型参数、 返回类型是void的函数”。 下面声明了一个指针pf指向该函数类型: void (*pf)(char *); // pf 是一个指向函数的指针
第十五章 位操作
反码或按位取反: ~ 二元运算符&通过逐位比较两个运算对象 二元运算符|, 通过逐位比较两个运算对象
 实现打开位(|)实现关闭位(&~)实现切换位(^)检查位((flag & mask) == mask)
第十六章 C语言预处理器和库
关于注释
 编译器定位每个反斜杠后面跟着换行符的实例, 并删除它们。(反斜杠可以延续定义)
printf("That's wond\ erful!\n"); 转换成一个逻辑行( logical line) : printf("That's wonderful\n!");
 编译器把文本划分成预处理记号序列、 空白序列和注释序列( 记号是由空格、 制表符或换行符分隔的项
 编译器将用一个空格字符替换每一条注释
关于#define(在编译的时候就会被带入,但不会进行实际的乘法运算)
 在语句中的,引号中的预定义不会解析
 重定义常量:
 在#define中使用参数
#define SQUARE(X) X*X 在程序中可以这样用: z = SQUARE(2); 但是在程序中只编译不运算 所以有优先级的问题 推荐使用括号来保证运算优先级
 ##运算符 粘合剂
XNAME(n) x ## n 当n=1时,表示x1
 可变参数
#define PR(...) printf(_ _VA_ARGS_ _)
关于#include
 明示常量——例如, stdio.h中定义的EOF、 NULL和BUFSIZE( 标准I/O缓冲区大小) 。
 宏函数——例如, getc(stdin)通常用getchar()定义, 而getc()经常用于定义较复杂的宏, 头文件ctype.h通常包含ctype系列函数的宏定义。
 函数声明——例如, string.h头文件( 一些旧的系统中是strings.h) 包含字符串函数系列的函数声明。 在ANSI C和后面的标准中, 函数声明都是函数原型形式。
 结构模版定义——标准I/O函数使用FILE结构, 该结构中包含了文件和1223与文件缓冲区相关的信息。 FILE结构在头文件stdio.h中。
 类型定义——标准 I/O 函数使用指向 FILE 的指针作为参数。 通常,stdio.h 用#define 或typedef把FILE定义为指向结构的指针。 类似地, size_t和time_t类型也定义在头文件中。

内联函数
在预编译的时候进行优化 把函数代替进去 。lien staice
省略部分内容 包括但不仅限于可变参数库、断言库。
第十七章:高级数据表示
从数组到链表
#define TSIZE 45 /* 储存片名的数组大小*/ struct film { char title[TSIZE]; int rating; struct film * next; }; 设置head记录下连接的头部 然后设置curr 和pre head——》——》pre——》curr (curr中的连接指针为空)
抽象数据类型ADT
 抽象到具体的过程(开发adt编程接口->编写代码实现接口)
1. 建立一个。h文件 里面存放着带指向下一项的结构体 和 头和当前位置的指针
2. 然后建立操作函数
队列ADT
 Item和Queue
二叉树

猜你喜欢

转载自www.cnblogs.com/Nssm/p/12311950.html