有点不理解的,决定摘录汇总即可
2 结构、联合和枚举
2.1 struct x1 { . . . };和typedef struct { . . . } x2 区别
前者是"结构标签",后者是"类型定义";在后文中你需要用 “struct x1”引用第一种, 而用 “x2”引用第二种;第二种声明更像一种抽象类新--用户不必知道它是一个结构, 而在声明它的实例时也不需要使用 struct 关键字
2.10 自动的位填充(所以sizeof可能返回值大于结构期望值)
为了保持结构中后面的域的对齐, 这也许是必须
的。为了高效的访问, 许多处理器喜欢 (或要求) 多字节对象 (例如, 结构中任何大于 char 的类型) 不能处于随意的内存地址, 而必须是 2 或 4 或对象大小的倍数。
2.17 显示枚举值符号的方法
可以写一个小函数, 把一个枚举常量值映射到字符串。(为了调试的目的, 一个好的调试器, 应该可以自动显示枚举常量值符
13 库函数
13.9 对多于内存的数据排序可以使用" 外部排序”法
13.10 在C里面取得当前时间,直接调用 time(), ctime(), localtime() 和/或 strftime() 就可以了
13.14 生成随机数
rand()%N //直接但不建议,因为许多随机数发生器的低位比特并不随机
//一个较好的方法(RAND MAX 在 ANSI 里 #define 在 <stdlib.h>。)
(int)((double)rand() /((double)RAND_MAX + 1) * N)
//另一个方法:
rand() / (RAND_MAX / N + 1)
20 其他
20.6 判断机器的字节顺序是高字节在前还是低字节在前
有个使用指针的方法:
int x = 1;
if(*(char *)&x== 1)
printf("little-endian\n");
else
printf("big-endian\n");
20.17 return 语句外层的括号是可选的