C语言
Egzzy
这个作者很懒,什么都没留下…
展开
-
预处理之单双井号与可变参数
1.单#号C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏: #define WARN_IF(EXP) /转载 2012-08-20 16:41:58 · 2169 阅读 · 0 评论 -
静态分配和动态分配内存的区别
要弄懂这个问题,首先你得知道静态和动态指的是什么。个人觉得卡耐基上的解释很经典: “The word static refers to things that happen at compile time and link time when the program is constructed—as opposed to load time or run time when the转载 2012-11-19 21:06:42 · 598 阅读 · 0 评论 -
单链表的基本操作
1、基本概念链表:一种线性表,但是其物理存储结构使用一组地址任意的存储单元存储数据。优点:易于插入和删除(相对于数组或者队列等)2、单链表的单元结构体分为两个部分:数据域指针域(形成链式结构) ┌──┬──┐ │data│next│ └──┴──┘ typedef struct node{ int data; struct node* n原创 2013-08-22 23:06:05 · 639 阅读 · 0 评论 -
堆栈的数组实现(完整版)
最开始的时候都是简单的实现,很多问题没有考虑,现在将堆栈重新实现一遍(数组表示);实现三步骤确定堆栈的结构,实现思路考虑程序健壮性,边界情况等函数实现(多种功能)对于堆栈,特征是先入后出;几个功能函数分别是poppushtop(只返回栈顶值,但是不删除,栈维持原样)栈的结构体表示如下:#define STACK_TYPE int#d原创 2013-09-26 13:31:42 · 1075 阅读 · 0 评论 -
队列的实现
1、循环队列一开始使用数组来表示队列,但是会造成很多的数据搬移,效率太低,所以考虑使用循环队列。循环队列的约定如下:用a[0] - a[maxsize - 1]来表示整个队列最开始是rear == front ==0空出一个字节,用来辨别空队列和满队列(当rear == front的时候,毫无疑问是空队列,当(rear + 1)%maxsize == front的时候,表示满队原创 2013-09-26 16:20:34 · 492 阅读 · 0 评论 -
ADI kernel面试
1、三个编程题链表逆序1-N打印出质数一个二叉树,将值为B的子树挂到值为A的字数下2、驱动和内核相关在i2c中:首先查找设备的流程,时序过程然后,对寄存器进行读的时序流程对寄存器进行写的时序流程NAK是怎么样的?编写的I2c设备驱动是如何注册的?i2c控制器驱动中是如何获得板级资源的?控制器资源在包文件中是如何存放的?驱动被注册,到驱动程序被原创 2013-11-17 11:21:41 · 1019 阅读 · 0 评论