
C
文章平均质量分 56
胡同里的民工
瞬息万变下,学会珍惜
展开
-
嵌入式C语言那点事(一)几个重要关键字
一、static关键字static,修饰变量时:1、限制该变量的作用域:比如静态全局变量,只能在该模块中使用(本c文件中)。2、决定该变量的存储位置:修饰为静态的变量,存储在静态数据区(非堆栈内)。(同比,全局变量也都存放在静态数据区中。)带初值和不带初值的静态变量:(以TI DSP 54XX为例)a.不带初值的静态变量,存储在.bss段中。b.带初值的静态变量,存储在.b原创 2012-05-02 22:47:00 · 1553 阅读 · 0 评论 -
嵌入式C语言那点事(二)栈与队列的实现
栈与队列的区别:栈——先入后出,后入先出;队列——先入先出,后入后出;应用举例:栈:函数调用时会将临时数据压栈;函数返回时再弹出来。队列:一般,系统中的任务和消息经常使用队列。可以按任务或消息到来的先后顺序执行。代码实现:背景:使用C语言,在VS2008环境下,按栈与队列的原理,采用最简单易懂的方式,针对正整型(int)元素实现栈与队列。原理:栈的存原创 2012-05-17 00:46:04 · 2764 阅读 · 0 评论 -
嵌入式C语言那点事(三)Linux中霸道的双向链表源码与应用
C语言作为面向过程的语言,想写出灵活的结构与封装需要很高技巧。但由于C语言的高效,几乎所有操作系统和面向对象语言的最底层实现都使用了C语言。即,使用C完成面向对象的封装。这次通过整理与仿写Linux的双向链表让我体会到了一些C语言封装的核心技巧。这个双向链表的巧妙之处在于1)利用宏将“函数”入参扩展出了“结构类型”; 2)利用纯地址偏移获取结构体指针;下面是具体实现:链表的实现由于原创 2012-05-19 15:29:40 · 2665 阅读 · 0 评论 -
C语言void指针的运算操作[小知识]
void *p;p++;...问:如果p的值为0x7f6c5b30,执行完p++,p的值为多少?如果是char *p,答案是0x7f6c5b31;如果是int *p,答案可能是0x7f6c5b32(如16bit DSP),可能是0x7f6c5b34(如32bit winxp),可能是0x7f6c5b38(如64bit Linux SUSE);如果是void *p呢?原创 2012-11-05 22:23:32 · 8906 阅读 · 0 评论