
C/C++
月光宝盒
选择了高山,也就选择了坎坷;选择了宁静,也就选择了孤独;选择了机遇,也就选择了风险。选择了,那就拼搏。大海惧怕寂静,所以澎湃;江河惧怕冷漠,所以涛滔;我惧怕平庸,所以追求卓越。
展开
-
sizeof与strlen区别
一.本质区别sizeof和strlen有本质上的区别。sizeof是C语言的一种单目运算符,如++、--等,并不是函数,sizeof的优先级为2级,比/、% 等3级运算符优先级高,sizeof以字节的形式给出操作数的存储空间的大小。而strlen是一个函数,是由C语言的标准库提供的。strlen计算的 是字符串的长度。二.使用区别1.sizeofsizeof的操作数可以是数据类型、函数、变量,表达原创 2009-12-07 23:01:00 · 505 阅读 · 0 评论 -
C语言位操作
位操作bit mask --位屏蔽位屏蔽的含义是:从包含多个位集的一个或一组字节中选出指定的一(些)位。作用分以下几类1)为了检查一个字节中的某些位,可以让这个字节和屏蔽字(bit mask)进行按位与操作(C的按位与运算符为&)——屏蔽字中与要检查的位对应的位全部为1,而其余的位(被屏蔽的位)全部为0。例如,为了检查变量 flags的最低位,你可以让flag原创 2012-11-21 23:28:26 · 1950 阅读 · 0 评论 -
atoi和atof的用法
【整理】Linux内核中的atoi,itoa等函数 读取文件时,如果我们希望是得到的int型,比如从"/sys/devices/platform/lcd-backlight/leds/lcd-backlight/brightness"这里读取,显然我们希望是int型但在read系统调用时从文件流中读出来的是char类型,所以读出来后需要转化成int,这 就需要atoi了。原创 2012-08-19 15:42:08 · 1625 阅读 · 0 评论 -
#if 和#ifdef的区别
参加华为的面试,竟然才发现#if 和#ifdef是有区别的,绝得无地自容。赶紧整理一下 先看个例子:#define TARGET_LITTLE_ENDINA 1#define TARGET_BIG_ENDINA 0#ifdef TARGET_LITTLE_ENDINAcall little endina function#elsecall big e原创 2012-05-13 23:59:09 · 12729 阅读 · 6 评论 -
c/c++中static 用法总结
通过本文可以了解以下内容1.C语言中的static的作用2.函数的可重入性3.C++中static的作用C中的static关键字惨痛教训:假设在test.h中定义了一个static bool g_test=false;若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=转载 2012-04-19 00:14:38 · 1048 阅读 · 0 评论 -
Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析 Android系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃。不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针、强指针和弱指针)的实现原理。 在使用C++来转载 2012-04-26 00:12:53 · 1198 阅读 · 0 评论 -
C语言中的真假值
也许很多人都和我一样,不知道现在的C语言已经有了布尔型:从C99标准开始,类型名字为“_Bool”。 在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式转载 2011-12-17 17:50:34 · 20557 阅读 · 0 评论 -
标记化结构初始化语法
标记化初始化:第一次看到这个名词,虽然看到用到了无数次,终于找到理论上的说明。 在标准C中(C89)结构标准初始化是用{}来实始化,在C99的版本,采用了采用可读性更强的标记化初始化,这在LINUX内核和驱动很为常见。这是ISO C99的用法 C Primer Plus第五版中相关章节: 已知一个结构,定义如下 struct book { char titl转载 2011-11-02 00:00:12 · 679 阅读 · 0 评论 -
一句log引发的血案
先上代码 unsigned nlcmVendorSize; void *plcmVendorID; plcmVendorID =smem_get_entry(SMEM_LCM_VENDOR_ID, &nlcmVendorSize);原创 2011-08-27 17:14:22 · 1288 阅读 · 0 评论 -
VC6.0提示输入mfcs42ud.pdb路径
<br />调试UNICODE程序时,要求输入mfcs42ud.pdb路径<br /> 在Debug模式下调试UNICODE编码的程序时(以前是MBCS编码,没有出现过此问题),提示"Please enter the path for mfcs42ud.pdb",虽然取消后可能继续运行,但是无法在监视窗口查看变量内容。<br />解决方法:<br /> 从VS6的安装盘上VC98/MFC/LIB下的MFCS42UD.LIB、MFCS42UD.PDB、MFCS42U.LIB及MFCS42转载 2011-03-16 15:31:00 · 2596 阅读 · 0 评论 -
字节对齐问题
<br />一.什么是字节对齐,为什么要对齐?<br /> 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量或者指令的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。<br /> 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对原创 2010-12-07 16:56:00 · 507 阅读 · 0 评论 -
硬件与软件的类比
先声明,此文是在讨论组的一篇邮件列表,个人觉得说的挺好,故转载在此。作者liuxinyu95@gmail.com,原文如下: 看到有不少做软件的同志,总是对做硬件的佩服得五体投地。觉得那才是真正的底层。>> 我来略微破除一下迷信,使得大家不要妄自菲薄。>> 我以前在大学时做机器人的,从机构设计,机械设计,工艺加工,控制系统设计,电机设计,电路设计,单片机编程,嵌入系统转载 2010-05-22 20:06:00 · 1380 阅读 · 0 评论 -
VC++文件扩展名
在应用程序中经常要使用一些位图、菜单之类的资源, VC中以rc为扩展名的文件称为资源文件, 其中包含了应用程序中用到的所有的windows资源, 要指出的一点是rc文件可以直接在VC集成环境中以可视化的方法进行编辑和修改。> 知识扩展: ================================================= Visual C++作为一种程序转载 2010-03-04 19:38:00 · 602 阅读 · 0 评论 -
想成为嵌入式程序员应知道的0x10个基本问题
想成为嵌入式程序员应知道的0x10个基本问题:预处理器(Preprocessor)1 . 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等转载 2015-05-05 10:28:50 · 2326 阅读 · 0 评论