小威
...
摘要: 1. fgets : 能读到‘\n’ gets : 不能读到‘\n’ 2. fgets/fputs : 对 ‘\n’的处理, 有就读 ,么有也不添加 gets : 遇到‘\n’就停不加‘\n’ puts : 会自动添加‘\n’ 3. size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) nmemb :想写的次数。返回值为实际写入的次数 size_t fwrite(const void *ptr, size_t size, size_t nemeb, FILE *stre... 阅读全文
posted @ 2013-08-18 19:33 小威_ 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 标准库的三部分 1.string 2.标准I/O 3.kernel内核 4.小技巧 (查看你已经写的代码量 ) 命令:find ./代码所在文件夹/ -name "*.c" | xargs wc -l 1.标准I/O :主存与外部设备的数据交换 2.文本文件 : 最早的定义(都可见的ASCII组成的) 二进制文件 : 人看不懂的。。 区别 : 文本文件可见, 二进制文件不可见。 以上只限于标准I/O里面 3.UTF-8 :占三个字节 4. sizeof 计算类型大小 在编译阶段 strlen 以 ‘\0’为结尾 在执行阶段 ... 阅读全文
posted @ 2013-08-17 19:38 小威_ 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1.变参函数 : 声明中带有“...”的函数 (1)函数调用时参数个数不确定 (2)注意: 变参函数中至少有一个固定参数 变参函数在声明,定义时参数不固定 变参列表在调用参数中, 参数个数,类型都是固定的 2.va_list 类型名 : typedef char* va_list va_start va_arg va_end 是宏 va_start : 保存第一个变参列表 例: va_start(ap, last) : &last + sizeof(last) ... 阅读全文
posted @ 2013-08-17 08:22 小威_ 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1.const 关键字 : 它限定变量不允许被修改 修饰整形变量时 const int a 等价于 int const a const : 左结合性 2.传入参数 :当参数指针只做传入参数使用时,通常使用const 修饰 传出参数 : 必须是指针,在函数内部进行间接引用 在函数体内部,第一次调用时指向的空间无意义。 函数调用之后,它指向的空间有意义,并作为函数返回值, 传入,传出参数 : 第一次调用时,指向的空间有意义。并在最后作为函数返回值返回。 切记 : 不可返回函数中普通的局部变量的地址 3.函数返回... 阅读全文
posted @ 2013-08-14 22:50 小威_ 阅读(174) 评论(0) 推荐(1) 编辑
摘要: 1.static 跟全局变量 : 限制作用域。 跟局部变量 : 延长生命周期。 跟函数 :只能在本模块内有效 2. 函数副作用 : 内部改变外部的值 3. 目标文件和可执行文件的区别 目标文件 : 相对路径,不可运行 可执行文件 : 绝对路径,可运行 虚拟址通过mmu物理址 4.数据段合并,(合并同类项) 地址回填(重定位) 5..bss 这两个合并.data.rodata 这两个合并.text 6.标准C库 Linux下 libc, unix和windows下的glibc 7.静态库 ... 阅读全文
posted @ 2013-08-14 00:11 小威_ 阅读(173) 评论(0) 推荐(1) 编辑
摘要: 1.段错误原因 : 访问了不存在的空间, 有空间但是么有权限 2.static : 在内存上开辟空间 3.objdump -dS a.out : 反汇编命令 4. gdb 中可以使用disassemble反汇编当前函数 注意 : 小权限转到大权限会出警告 5.p $esp : 打印esp的值。。 6.函数调用和返回过程的规则 (1). 参数压栈传递, 并且是从右向左依次压栈 (2). ebp总是指向当前栈帧的栈低 (3). 返回值通过eax寄存器传递 7. c语言的预处理器 cpp 8. _start 调用main函数 (_sta... 阅读全文
posted @ 2013-08-13 00:33 小威_ 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 汇编呀,,汇编 推荐一本汇编入门书 《Programming from the ground up》 1.wget 非交互式的网络下载工具 2.Linux程序正常退出,返回0, 否则返回非0 3. 汇编使用'#'注释 4.software(user space)system callos(cernel space)diverhardware 5.中断 硬件中断和软件中断两种。 system call 中断号:0x80 6. 在汇编中 $1 :表示数字1 1 : 表示地址1 movl :表示mov4个字节的内容 ... 阅读全文
posted @ 2013-08-10 19:09 小威_ 阅读(211) 评论(0) 推荐(0) 编辑
摘要: makefile 1. 想要了解一个项目的流程,,第一步 ,,看makefile文件。 2.makefile 本质 : 用来管理工程文件的工具 指令 make 好处 : 提高工作效率,减少出错概率 基本规则 :三部分组成 目标 :依赖 (tab)命令(只有一个Tab) 3.文件名只有makefile和Makefile两种,如果不是这两种,需要使用 make -f 文件名 进行调用 4. 工作原则 : 检查规则中的依赖条件是否存在 检查该规则中的目标是否需要... 阅读全文
posted @ 2013-08-09 23:01 小威_ 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 预处理 1.预处理规则 (在源程序编译之前,对程序进行加工) 条件包含,展开宏,条件编译 2.头文件包含的内容 (1). 包含函数声明 (2). 包含变量声明 (3). 包含宏定义 (4). 包含typedef (5). 嵌套include 3.通用规则 指令都以#开头 4.变量的宏定义 #define 宏名 替换列表 注意:不添加 “;” 不可有额外符号 拓展:只进行简单替换,不进行正确性检查 5. #undef 取消宏定义 6. 函数宏 节省... 阅读全文
posted @ 2013-08-08 21:46 小威_ 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 1.memset (p,o,len) 内存初始化 2.指针初始化 p = &a; 使用另外一根指针进行初始化 p = q malloc函数 通过函数调用 3.int puts(const char *s) 会自动添加‘\n’ 返回输入字符的个数 失败返回EOF 4.putchar 返回字符串 5.putc(int c, FILE *stream) 到流文件中 成功返回ASCII 失败返回EOF 6.函数与宏的区别 函数可通过指针调用 宏不可以 7.fputs(const char *s, FILE ... 阅读全文
posted @ 2013-08-06 00:26 小威_ 阅读(112) 评论(0) 推荐(0) 编辑