Embeded C
fanwenjieok
这个作者很懒,什么都没留下…
展开
-
C语言中的结构体内存对齐
前言: 之前分析迅雷近几年笔试题的时候,提到了一类问题考察的是内存对齐的知识。之前做的总结中少了这部分知识,而回忆起来,去年的大大小小那么多场笔试,确实有不少公司都还考察这个,这里正好就单独写一篇,总结总结这个问题吧。有不当之处,欢迎大家留言指正,谢谢!一.何为内存对齐,内存对齐的作用 我们现在使用的算机中内存空间都是按照字节(Byte)转载 2014-07-08 08:58:19 · 525 阅读 · 0 评论 -
栈增长方向与大端/小端问题
栈增长方向与大端/小端问题栈增长和大端/小端问题是和CPU相关的两个问题。在内存管理中,与栈对应是堆。对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方式是向下的,是向着内存地址减小的方向增长。在内存中,“堆”和“栈”共用全部的自由空间,只不过各自的起始地址和增长方向不同,它们之间并没有一个固定的界限,如果在运行时,“堆”和 “栈”增长到发生了相互覆盖时原创 2014-10-05 16:43:57 · 2011 阅读 · 0 评论 -
C语言数组参数与指针参数
C语言数组参数与指针参数我们都知道参数分为形参和实参。形参是指声明或定义函数时的参数,而实参是在调用函数时主调函数传递过来的实际值。原创 2014-10-05 16:26:14 · 777 阅读 · 0 评论 -
memset ,memcpy 和strcpy 区别
Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];memset(a, '\0', sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。如:struct sample_struct{ char csName[16]; int iSe转载 2014-10-10 22:42:34 · 764 阅读 · 0 评论 -
STDIN_FILENO的作用及与stdin 的区别
1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类型不一致:原创 2014-10-10 20:40:04 · 476 阅读 · 0 评论 -
经典软件设计模型 - 事件驱动模型
模型说明在UI编程中,常常要对鼠标点击进行相应,首先如何获得鼠标点击呢?方式一:创建一个线程,该线程一直循环检测是否有鼠标点击,那么这个方式有以下几个缺点:1. CPU资源浪费,可能鼠标点击的频率非常小,但是扫描线程还是会一直循环检测,这会造成很多的CPU资源浪费;如果扫描鼠标点击的接口是阻塞的呢?2. 如果是堵塞的,又会出现下面这样的问题,如果我们不但要扫描鼠标点击,还要扫描键盘转载 2014-10-25 12:00:44 · 918 阅读 · 0 评论 -
漫谈C语言结构体
漫谈C语言结构体相信大家对于结构体都不陌生。在此,分享出本人对C语言结构体的学习心得。如果你发现这个总结中有你以前所未掌握的,那本文也算是有点价值了。当然,水平有限,若发现不足之处恳请指出。代码文件test.c我放在下面。在此,我会围绕以下2个问题来分析和应用C语言结构体: 1. C语言中的结构体有何作用2. 结构体成员变量内存对齐有何讲究(转载 2014-10-05 16:55:49 · 934 阅读 · 0 评论 -
bitmap分析
最近正在着手开发一个图片库,也就是实现对常见图片格式的度写操作。作为总结与积累,我会把这些图片格式以及加载的实现写在我的Blog上。说到图片,位图(Bitmap)当然是最简单的,它Windows显示图片的基本格式,其文件扩展名为*.BMP。在Windows下,任何各式的图片文件(包括视频播放)都要转化为位图个时候才能显示出来,各种格式的图片文件也都是在位图格式的基础上采用不同的压缩算法生成的(转载 2014-08-27 17:58:06 · 545 阅读 · 0 评论 -
一个由字符集引发的血案
凡使用过VC编程的都知道,VC支持两种格式的编码,ASCII和Unicode,在字符串前面加L表示一个Unicode字符串,不加前缀则表示ASCII字符串,那么用_T()包含的字符串是什么编码呢,我想这里不用再解释了,用过VC的都知道。 在VC编程里,如果要使用C函数输出一个字符串,该使用哪个函数呢?毫无疑问,要输出ASCII字符串使用printf,输出Unicode字符串转载 2014-08-26 10:32:24 · 485 阅读 · 0 评论 -
alpha混合技术
lpha混合技术对熟悉游戏的人来说不会陌生,这种技术在如今的游戏特效里已经被用烂了。3D的游戏就不说了,2D的游戏里,这种技术也是满眼皆是。 alpha混合听上去很神秘,实际非常简单,其作用就是要实现一种半透明效果。假设一种不透明东西的颜色是A,另一种透明的东西的颜色是B,那么透过B去看A,看上去的颜色C就是B和A的混合颜色,可以用这个式子来近似,设B物体的透明度为alpha(转载 2014-08-24 16:17:53 · 644 阅读 · 0 评论 -
内存管理
内存管理 在写C/C++程序的时候,最头疼的部分一定包括内存管理,一提到内存管理总是提心吊胆,但是又不可避免地常常会遇到,而这块的知识也是公司招聘的一个评价方面,能够很好地体现笔试面试者的功底。这部分的内容稍深一些,大家细心阅读,能对内存管理有一个比较好的把握。7.1 内存分配的方式 最长被问到的问题之一,基础中的基础。对C和C++而言,内存分配方式有三转载 2014-08-21 23:01:24 · 401 阅读 · 0 评论 -
想成为嵌入式程序员应知道的0x10个基本问题
<br /> C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。<br /> 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标转载 2011-04-03 21:22:00 · 564 阅读 · 0 评论 -
10种超经典的软件滤波方法,你值得拥有!
1、限幅滤波法(又称程序判断滤波法)A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A); 每次检测到新值时判断: 如果本次值与上次值之差 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。B、优点: 能有效克服因偶然因素引起的转载 2014-08-20 09:52:00 · 1049 阅读 · 0 评论 -
ASCII,Unicode和UTF-8 傻傻分不清楚
1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出 256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从 0000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进原创 2014-08-01 00:45:31 · 547 阅读 · 0 评论 -
指针的用法
// 指针定义时设为NULLunsigned char *pucBuffer = NULL;pucBuffer = GetBuffer(sizeof(DWORD)); if (NULL != pucBuffer) // 申请的内存指针必须进行有效性验证{ // 申请的内存使用前必须进行初始化 memcpy(pucBuffer, 0xFF, sizeof(DWORD)); }Fr原创 2014-08-02 13:30:27 · 532 阅读 · 0 评论 -
hzk16的介绍以及简单的使用方法
hzk16的介绍以及简单的使用方法HZK16 字库是符合GB2312标准的16×16点阵字库,HZK16的GB2312-80支持的汉字有6763个,符号682个。其中一级汉字有3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。我们在一些应用场合根本用不到这么多汉字字模,所以在应用时就可以只提取部分字体作为己用。HZK16字库里的16×16汉字一共需要256个点来显示,也就是原创 2014-07-31 23:56:58 · 2709 阅读 · 0 评论 -
基于状态机的按键程序
一般的按键输入软件接口程序非常简单,在程序中一旦检测到按键输入口为低电平(有时可能为高),便采用软件延时的方法来进行消抖,然后再次检测按键输入,如果再次确认为低电平则表示有按键按下,转入执行按键处理程序。如果延时后检测的电平为高电平则放弃本次按键检测,重新开始一次按键检测过程。在简单的系统中这种方法比较可以用,但是在复杂的系统实时性要求较高的系统中这种方法的CPU利用率比较低,造成资源的浪费。另外原创 2014-10-08 19:31:12 · 4791 阅读 · 0 评论