C和指针
kyowill
这个作者很懒,什么都没留下…
展开
-
读书笔记之c和指针(3)
二维数组1.二维数组名是一个指向数组的指针,一维数组名是指向元素类型的指针2.编译器也接受数组形式的函数形参3.二(多)维数组除了第一维剩下的必须写出原创 2015-08-04 22:02:09 · 295 阅读 · 0 评论 -
读书笔记之c和指针(4)
字符串1.任何指针类型都可以转换成void*指针2.strlen计算一个字符串的长度,它的返回值是一个无符号整数,把它用于表达式时应该小心原创 2015-08-07 15:38:39 · 406 阅读 · 0 评论 -
读书笔记之c和指针(12)
抽象数据类型1.一个模块的接口应该避免暴露他的细节2.将数据类型参数化,使他更容易修改,c语言中利用宏来定义一组函数来实现泛型3.复用现存的代码而不是对它进行改写原创 2015-08-10 16:06:46 · 231 阅读 · 0 评论 -
读书笔记之c和指针(13)
运行时环境1.局部变量、函数原型声明不会产生任何汇编代码,除非出现初始化操作2.参数列表的第一个参数便位于堆栈中这堆参数的顶部,使他距离帧指针的偏移量是一个常数,因此函数可以正确地访问前三个参数,对额外的参数简单的忽略3.使用stdarg.h文件中定义的宏来访问可变参数4.虚拟内存是由操作系统实现的,他在需要时把程序活动的部分放入内存并把不活动的部分复制到磁盘中,这样就允许系统运行原创 2015-08-10 16:53:01 · 311 阅读 · 0 评论 -
读书笔记之c和指针(11)
标准函数库1.信号就是一种事件,它可能异步发生,也就是不与程序执行过程的任何时间同步,如果程序并未安排怎样处理一个特定的信号,那么信号出现时程序就做出一个缺省的反应,绝大多数编译器选择终止程序2.如果你希望捕捉同种类型的信号,从当前这个信号的处理函数返回之前注意调用signal函数重新设置信号处理函数,否则只有第一个信号被处理,接下来的信号将使用缺省反应3.断言就是声明某种东西应该为真原创 2015-08-10 15:44:51 · 346 阅读 · 0 评论 -
读书笔记之c和指针(10)
输入输出1.fflush迫使缓冲区的数据立即写入,不管他是否已满2.随时检查fopen的返回值,打开不成功时返回NULL3.对于输出流,fclose函数在文件关闭前刷新缓冲区4.EOF被定义为一个整型,他的值在任何可能出现的字符之外,这种解决方法允许我门使用这些函数来读取二进制文件5.“退回”字符和流的位置有关,所以如果使用fseek函数改变了流的位置,所有退回的字符都将被丢弃原创 2015-08-09 21:03:57 · 297 阅读 · 0 评论 -
读书笔记之c和指针(9)
预处理器1.编译的第一个阶段是预处理,预处理器进行文本性质的操作2.如果宏定义的stuff非常长,可以把它分成几行,除了最后一行之外,每行的末尾都要加一个反斜杠3.宏替换也可以用于调用函数4.#define机制规定,允许把参数替换到文本中,这种实现通常称为宏#define name(parameter-list) stuff parameter-list(参数列表)是由一个由逗号分原创 2015-08-09 18:28:29 · 262 阅读 · 0 评论 -
读书笔记之c和指针(7)
使用结构和指针1.链表的每个节点都有一个指针指向它2.从if提炼语句可能会改变测试结果原创 2015-08-09 00:53:12 · 248 阅读 · 0 评论 -
读书笔记之c和指针(8)
高级指针话题1.int *f;把表达式*f声明为int型。2.int *f()与int (*f)()的区别3.程序中的每个函数都位于内存中的位置,因此存在函数指针4.int f()[]与int f[]();前者是是一个函数返回一个整形数组,这种声明非法,c中函数只能返回标量值;后者也是一个非法声明,f是一个数组,数组里存放着返回值是int的函数,由于每个这种函数的的长度可能不同,违原创 2015-08-09 16:24:23 · 289 阅读 · 0 评论 -
读书笔记之c和指针(6)
动态内存分配1.当一个数组被声明时,它所需要的内存在编译时就被分配,动态内存是在运行时分配的2.如果内核(操作系统)无法向malloc提供更多的内存就返回一个NULL指针3.malloc和calloc的区别是后者会给内存初始化为04.不能对NULL解引用5.被释放后的内存不可用6.传递给free必须是malloc,calloc,realloc的堆内存7.内存泄漏将导致系原创 2015-08-07 23:48:28 · 257 阅读 · 0 评论 -
读书笔记之c和指针(2)
一维数组1.数组名是指针常量,也就是数组第一个元素的地址2.程序完成链接后,内存中数组的位置是固定的3.只有在两种情况下,数组名并不用指针常量来表示,就是当数组名作为sizeof操作符或单目操作符&的操作数时,取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量值的指针4.2[arr] 等价于 arr[2]5.当你根据某个固定数目的增量在一个数组中移动时,原创 2015-08-04 19:53:05 · 70 阅读 · 0 评论 -
读书笔记之c和指针(5)
结构和联合1.结构存储满足边界对齐要求,如果某个机器的整形长度为4字节,并且它的起始位置必须被4整除2.让那些对边界要求最严格的成员先出现,对边界要求最弱的成员后出现,可以减少空间损失3.向函数传递结构体指针,减少开销4.联合的所有成员引用的是内存中的相同位置,内存中相同的位组合可以被解释为不同的东西5.如果联合的各个成员具有不同的长度,联合的长度就是它最长成员的长度6.联原创 2015-08-07 20:57:52 · 236 阅读 · 0 评论 -
读书笔记之c和指针(1)
空白和注释1.用#if 0 statements #endif可以注释代码好过/*预处理指令1.预处理指令包括#include,define。是由预处理器解释的,对其修改后把源代码交给编译器2.如果你有一些声明需要用于几个不同的源文件,你在一个单一文件编写这些声明,便于维护main函数1.NUL是ascII字符集中'\0'字符的名字,字节模式全是0,NULL是指一个其值为0原创 2015-08-04 13:38:06 · 534 阅读 · 0 评论