
C
文章平均质量分 79
jeffade
这个作者很懒,什么都没留下…
展开
-
嵌入式C语言专题一:软件架构篇
软件结构是软件的灵魂!结构混乱的程序面目可憎,调试、测试、维护、升级都极度困难。 一个高尚的程序员应该是写出如艺术作品般程序的程序员。 内容要点: ·模块划分 ·多任务还是单任务 ·单任务程序典型架构 ·中断服务程序 ·硬件驱动模块 ·C的面向对象化 模块划分 模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统转载 2012-06-05 20:47:23 · 689 阅读 · 0 评论 -
堆和栈
堆(heap)和栈(stack)是非常重要的概念,当我们进行程序开发时理解它们非常重要,尤其是对于嵌入式系统开发。比如在嵌入式系统中,任务的栈通常都很小,可能也就几K字节。在这种情况下,我们就应当尽可能不要将占用内存大的变量分配在栈上,而是应当分配在堆上;此外,也尽量不要采用递归的方式来设计程序,否则很容易造成栈溢出。 从本质上说,堆和栈都是内存,那么我们只能从概念上对其进行区分了。为了方便转载 2012-10-22 08:56:33 · 576 阅读 · 0 评论 -
C语言指针5分钟教程
指针、引用和取值 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。本文会对上述所有指针类型进行探讨。 根据出现的位置不同,操作符 * 既可以用来声转载 2012-09-24 22:46:04 · 615 阅读 · 0 评论 -
局部变量、全局变量、堆、堆栈、静态和全局
预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 全局区(静态区)(static)—,全局变量和静态转载 2012-09-08 14:26:13 · 1329 阅读 · 0 评论 -
大端模式 小端模式
大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。转载 2012-09-08 14:27:01 · 771 阅读 · 0 评论 -
想成为嵌入式程序员应知道的0x10个基本问题
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这 是个愚蠢的问题吗?如要你答出某个字符的ASCII转载 2012-06-12 14:22:38 · 513 阅读 · 0 评论 -
学习软件技术的2、3点
十多年前一块探索Linux技术的张波同学,如今虽不在技术一线,但他曾经的技术经历以及表述这种经历的有趣方式,给后来者以启发: ————————————————————————————————————————————- 学习软件技术的2、3点 张波 很久很久没有接触开源社区了,也很久很久没有接触技术了,自从自废武功转作商务以后,就再也不好意思在开源论坛吱声了;木有办法,技术发转载 2012-06-12 10:47:56 · 1401 阅读 · 1 评论 -
C链表
链表是C语言编程中常用的数据结构,比如我们要建一个整数链表,一般可能这么定义: ? 1 2 3 4 structint_node { intval; structint_node *next; }; 为了实现链表的插入、删除、遍历等功能,另外要再实现一系列函数,比转载 2012-06-08 19:48:33 · 520 阅读 · 0 评论 -
嵌入式C语言专题四:键盘操作篇
计算机学的许多知识都具有相通性,因而,不断追赶时髦技术而忽略基本功的做法是徒劳无意的。我们最多需要"精通 "三种语言,最佳拍档是汇编、C、C++(或JAVA),很显然,如果你"精通"了这三种语言,其它语言你应该是可以很快"熟悉"的,否则你就没有"精通 "它们。 内容要点: ·处理功能键 ·处理数字键 ·整理用户输入 处理功能键 功能键的问题在于,用户界面并非固定的,用户转载 2012-06-05 20:49:07 · 476 阅读 · 0 评论 -
嵌入式C语言专题二:内存操作篇
C语言最精华的内涵皆在内存操作中体现。我们之所以在嵌入式系统中使用C语言进行程序设计,99%是因为其强大的内存操作能力! 如果你爱编程,请你爱C语言; 如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针! 内容要点: ·数据指针 ·函数指针 ·数组vs.动态申请 ·关键字const ·关键字volatile ·CPU字长与存储器位宽不一致处理 数转载 2012-06-05 20:47:57 · 467 阅读 · 0 评论 -
嵌入式专题C语言篇
不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,由于汇编语言开发的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C语言--一种"高级的低级"语言,则成为嵌入式系统开发的最佳选择。 背景篇 本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程技巧。本文讲转载 2012-06-05 20:46:45 · 382 阅读 · 0 评论 -
嵌入式C语言专题五:性能优化篇
内容要点: ·使用宏定义 ·使用寄存器变量 ·内嵌汇编 ·利用硬件特性 ·活用位操作 使用宏定义 在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个: 错误做法: #define MIN(A,B) ( A 正转载 2012-06-05 20:49:39 · 726 阅读 · 0 评论 -
嵌入式C语言专题三:屏幕操作篇
屏幕乃嵌入式系统生存之重要辅助,面目可憎之显示将另用户逃之夭夭。屏幕编程若处理不好,将是软件中最不系统、最混乱的部分,笔者曾深受其害。 内容要点: ·汉字处理 ·系统时间显示 ·动画显示 ·菜单操作 ·模拟MessageBox函数 汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能。例如,转载 2012-06-05 20:48:35 · 565 阅读 · 0 评论 -
常见的单链表题目
一些常见的单链表题目,总结思路和实现代码。 1.单链表的反序 2.给单链表建环 3.检测单链表是否有环 4.给单链表解环 5.检测两条链表是否相交 6.不输入头节点,删除单链表的指定节点(只给定待删除节点指针) 1.单链表的反序 [cpp] view plaincopy //逆转链表,并返回逆转转载 2012-10-28 14:50:42 · 661 阅读 · 0 评论