2012年4月3日

(笔记)往一个指定的地址读写一个值

摘要: 一、如何往一个指定的地址写入一个值呢? 举例: (向0x2000100001处写入值0x12345678): *(unsigned int *)0x20010000 = 0x12345678; 分析: 1、0x20010000是待写入的地址。 2、(unsigned int *)0x20010000 阅读全文

posted @ 2012-04-03 18:03 tdyizhen1314 阅读(2140) 评论(0) 推荐(0) 编辑

(转)C 语言高效编程的几招

摘要: 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第 1 招:以空间换时间计算机程序中最大的矛盾是空间和时间的矛盾,那么从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。例如:字符串的赋值。方法 A,通常的办法:#define LEN 32char string1 [LEN];memset (string1,0,LEN);strcpy (string1,"This is an example!!"方法 B:const char string2[LEN]="Th 阅读全文

posted @ 2012-04-03 17:37 tdyizhen1314 阅读(402) 评论(0) 推荐(1) 编辑

(转)常用算法大全-贪婪算法

摘要: 原地址:http://www.cnblogs.com/tuyile006/archive/2007/06/07/774734.html本章首先引入最优化的概念,然后介绍一种直观的问题求解方法:贪婪算法。最后,应用该算法给出货箱装船问题、背包问题、拓扑排序问题、二分覆盖问题、最短路径问题、最小代价生成树等问题的求解方案。1.1 最优化问题 本章及后续章节中的许多例子都是最优化问题( optimization problem),每个最优化问题都包含一组限制条件( c o n s t r a i n t)和一个优化函数( optimization function),符合限制条件的问题求解方案称为可 阅读全文

posted @ 2012-04-03 17:36 tdyizhen1314 阅读(530) 评论(0) 推荐(0) 编辑

(转)__inline的用法

摘要: __inline的用法一、inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。表达式形式的宏定义一例:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来:1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因。2. 这种宏定义在形式上类似于一个函数,但在使用它时,仅仅只是做 阅读全文

posted @ 2012-04-03 17:33 tdyizhen1314 阅读(380) 评论(0) 推荐(1) 编辑

(转)链表,反向链表的相关操作

摘要: 假设链表节点的数据结构为:struct node {int data;struct node* next;};创建单链表的程序为:struct node* create(unsigned int n){//创建长度为n的单链表assert(n > 0);node* head;head = new node;head->next = NULL;cout << "请输入head节点的值(int型):";cin >> head->data;if (n == 1){ return head;}node* p = head;for (unsi 阅读全文

posted @ 2012-04-03 17:32 tdyizhen1314 阅读(2167) 评论(1) 推荐(1) 编辑

(转)堆和链表

摘要: 我们经常在题目中有要求,输入一个整数,然后以这个整数作为数组的元素个数,下面的程序代码是错误的。intn,array[n];scanf(%d,&n);在TurboC中,不允许出现动态数组。那么如果必须需要这样时,就只能使用链表了。一、堆堆是一种动态存储结构,实际上就是数据段中的自由存储区,它是C语言中使用的一种名称,常常用于动态数据的存储分配。堆中存入一数据,总是以2字节的整数倍进行分配,地址向增加方向变动。堆可以不断进行分配直到没有堆空间为止,也可以随时进行释放、再分配,不存在次序问题。所谓动态数组是指在程序运行期间确定其大小的,如常用到的动态数组,它们是在程序执行过程中动态进行变化 阅读全文

posted @ 2012-04-03 17:31 tdyizhen1314 阅读(393) 评论(0) 推荐(0) 编辑

(转)巧妙运用C语言位运算

摘要: 位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。 位运算符有: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 其中,按位取反运算符是单目运算符,其余均为双目运算符。 位运算符的优先级从高到低,依次为~、&、^、|, 其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符。 (1)按位与运算符(&) 按位与运算将两个运算分量的对应位按位遵照以下规则进行计算: 0 & 0 = 0, 0 & 1 = 0, 阅读全文

posted @ 2012-04-03 17:30 tdyizhen1314 阅读(9556) 评论(0) 推荐(4) 编辑

(转)C语言字节对齐

摘要: 图片可以在下面的博客中看到.转自:http://blog.csdn.net/bigloomy/article/details/6633008可能有不少读者会问,字节对齐有必要拿出来单独写一篇博客嘛?我觉得是很有必要,但是它却是被很多人所忽视的一个重点。那么我们使用字节对齐的作用和原因是什么呢?由于硬件平台之间对存储空间的处理上是有很大不同的,一些平台对某些特定类型的数据只能从某些特定地址开始存取,如通常有些架构的CPU要求在编程时必须保证字节对齐,否则访问一个没有进行字节对齐的变量的时候会发生错误。而有些平台可能没有这种情况,但是通常的情况是如果我们编程的时候不按照适合其平台要求对数据存放进行 阅读全文

posted @ 2012-04-03 17:27 tdyizhen1314 阅读(894) 评论(0) 推荐(1) 编辑

(转)STM32学习笔记(7):USART串口的使用

摘要: STM32学习笔记(7):USART串口的使用2011年4月19日 USART串口通信1. 串口的基本概念在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使用DMA方式,实现高速数据通信。USART通过3个引脚与其他设备连接在一起,任何US 阅读全文

posted @ 2012-04-03 17:24 tdyizhen1314 阅读(7314) 评论(0) 推荐(1) 编辑

(转)STM32学习笔记(6):LCD的显示

摘要: STM32学习笔记(6):LCD的显示2011年4月14日 LCD显示1. LCD/LCM的基本概念液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。LCM(LCD Module)即LCD显示模组、液晶模块,是指将液晶显示器件,连接件,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。在平时的学习开发中,我们一般使用的是LCM,带有驱动IC和LCD屏幕等多个模块。2. FSMC的基本概念在STM32上开发LCD 阅读全文

posted @ 2012-04-03 17:22 tdyizhen1314 阅读(16683) 评论(1) 推荐(0) 编辑

导航