Linux环境开发/c
文章平均质量分 55
Luyna
每一个不曾起舞的日子,都是对生命的辜负。
展开
-
C学习笔记
重新读了一遍《C程序设计语言》这本书,复习了一下C的基本语法,记录以备忘。 重要基础知识点: 在C语言中,所有的函数参数都是“通过值”传递的。 如果是数组参数,传递的是数组的起始地址,并不复制数组元素本身。在被调用函数中,可以通过下标访问或者修改数组元素的值 引用和取地址的区别: 引用&就像一个“修饰”一样,只有在定义和声明或者说明参数类型的时候才用,平时引用变量和普通变量一样。原创 2015-03-30 19:26:43 · 380 阅读 · 0 评论 -
如何实现一个malloc
任何一个用过或学过C的人对malloc都不会陌生。大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉。但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至把malloc当做操作系统所提供的系统调用或C的关键字。实际上,malloc只是C的标准库中提供的一个普通函数,而且实现malloc的基本思想并不复杂,任何一个对C和操作系统有些许了解的程序员都可以很转载 2015-04-02 15:50:02 · 399 阅读 · 0 评论 -
define typedef const用法
c语言定义常量时有三种方式,#define,typedef和const,下面总结下这三种方式的用法: define宏定义:本质是简单的文本替换 #define PI 3.1415296; 由于define定义的函数不会进行类型检查,只是在预处理时将调用宏定义中的参数进行简单的替换而已,所以可能会造成意外的错误。比如常见错误: #define point (int*); point a,b原创 2015-04-07 14:04:08 · 769 阅读 · 1 评论 -
结构体内存对齐规则
1. 结构体的内存布局记住两个规则即可,这是编译器的优化措施。 规则1:结构体中第一个成员的偏移量是0,以后每个成员的位置是x的倍数; x = min(#pragma pack(), 该成员自身的长度) 规则2:成员对齐后,结构体自身也要对齐,按照y的倍数进行; y = min(#pragma pack(), 最大成员尺寸)。 其中#pragma转载 2015-03-22 09:50:12 · 387 阅读 · 0 评论