- 博客(12)
- 资源 (17)
- 收藏
- 关注
原创 几道嵌入式的面试题
1. 用C语言跳到绝对地址0xFFF0处。 typedef void (*lpFunction)(void); lpFunction lpReset = (lpFunction)0xFFF0; // ((void)(*)(void))(0xFFF0) lpReset();2. 用宏写出大小端判定,大端返回0,小端返回1 不会...3. sizeof()操作符 char* ss = "0123456789"; sizeof(ss) 结果 4 ===》ss是指向字符串常
2010-11-30 07:09:00 859
原创 const的用法
const修饰的是紧跟其后的内容,例如:int const *p; const int *p; const修饰的是*p,即p所指向的内容是常量。因此,p指向的地址可以改变,但p指向的地址里的值不能通过指针p改变(但可由其他方式改变);int * const p; const 修饰的是p,即p所指向的地址是常量。因此,p所指向的地址不能改变,但p所指地址里的值可通过指针p改变;int const * const p; 第一个const修饰的是*p,即p所指地址的内容不能通过指针p改变,第2个const修饰的内
2010-11-26 12:04:00 541
原创 C语言声明优先级规则
A 声明从它的名字开始读取,然后按照优先级顺序依次读取。B 优先级从高到低依次是: B.1 声明中被括号括起来的部分; B.2 后缀操作符:括号()表示这是一个函数,而方括号[]表示这是一个数组; B.3 前缀操作符:*号表示“指向...的指针”C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int,long等),那它作用于类型说明符。在其他情况下,const和(volatile)关键 字作用于左边紧邻的指针星号.
2010-11-26 11:51:00 1294
原创 堆排序以及最大优先级队列
<br />typedef unsigned int word; /**************************************堆排序算法***************************************/ // 堆排序算法 // 父节点,左节点,右节点下标(其实是下标+1) #define PARENT(x) ((x) >> 1) #define LEFT(x) ((x) << 1) #define RIGHT(x) (((x) << 1) +
2010-11-24 09:51:00 623
原创 分治排序和霍纳规则求多项式
typedef unsigned int word; #define MAXSIZE 200 word L1[MAXSIZE] = { 0 }; word L2[MAXSIZE] = { 0 }; // ================================================================== // 分治排序法,递归版 void merge(
2010-11-24 09:46:00 1086
原创 用双链表实现的堆栈和队列
带哨兵元素,新节点添加到链表的头部。头文件:#ifndef STACK_H_ #define STACK_H_ #include "d_list.h" byte StackInit(List *plist,word length); // 堆栈初始化 byte StackPush(List *plist,Item item); // 压栈 byte StackPop(List *plist,Item *pitem); // 出栈 byte
2010-11-22 21:43:00 3197
原创 C实现双链表
链表带以下功能:1. 初始化链表:创建一个哨兵节点,链表头指向哨兵节点;2. 添加元素:添加的元素加到链表尾部;3. 搜索元素:遍历链表,寻找第一个匹配的节点,若找到,返回该节点的指针,若找不到,返回0;5. 删除元素: 删除匹配的第一个节点。头文件:#ifndef D_LIST_H_ #define D_LIST_H_ typedef unsigned int word; typedef unsigned char byte; typedef int Item; struct node {
2010-11-22 13:28:00 3972
原创 指令执行时间
高端的处理器里通常都带指令预取和多级流水线结构,昨天突然被问到在这种情况下怎么去计算多条语句的执行时间。想了半天也迷糊,今天一早醒来,突然想起来,其实CPU执行一条指令包含了取指令和执行指令2个步骤,执行指令的时间是固定的,而取指令不同,其实所谓的指令预取和流水线结构,是为了减少取值时间的,尤其在高速的CPU中,CPU读写RAM虽然比读写外部存储器快,但依然赶不上CPU的指令执行速度。因此,在这种带流水线的结构中,执行时间最快应该就是在一条指令执行完后,下一条指令也准备好,CPU不用花时间等待取指
2010-11-22 09:12:00 4393
原创 指针的地址
指针也可运用取地址运算符&,例如:int i; int *p = &i;在以上声明中,p是指针,指向变量i的地址,*为解引用符,*p即是i的值,&是取地址运算符,&p是存放指针p的地址。看如下2个代码:1.int *Example(int *test) { int i; // 局部变量,在堆栈中分配,函数调用完成后失效 int *p; i = *test; i += test; p = &i; return p; // 此处
2010-11-18 21:52:00 695
转载 typedef用法小结
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。Q:如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?A: 使用 typedefs 为现有类型创建同义字。 定义易于记忆的类型名 typedef 使用最多的地方是创建易于记忆的类型名
2010-11-18 21:00:00 651
原创 C实现单链表
#ifndef LIST_H_ #define LIST_H_ #include #define TSIZE 45 // 存放片名的数组大小 struct film { char title[TSIZE]; int rating; }; typedef struct film Item; // 一般类型定义 typedef struct node { Item item; struct node *next; }Node; // 链
2010-11-17 21:36:00 3099
原创 uboot的一些简单应用
<br />1. 任务挂起与恢复:<br /> a. 可挂起自身,也可挂起别的任务。OSTaskSuspend(INT8U prio) ,当prio为OS_PRIO_SELF时,挂起自身<br /> b. 挂起和恢复将导致任务调度<br /> c. 挂起为附加功能,即若任务同时处于挂起和延迟状态,则延迟时间过后,还需等到任务恢复之后才能就绪<br /> void TaskStartA(void *pdata) { INT16U count = 0; pdata = pdata
2010-11-05 09:21:00 1063
UML用户指南
2012-09-22
国标二级汉字点阵字库(16进制字符型格式显示)
2010-05-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人