linux

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  C/C++基础知识

摘要:可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。简介 可重入函数也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈. 阅读全文
posted @ 2012-10-05 11:34 h13 阅读(694) 评论(0) 推荐(0) 编辑

摘要:自动转换遵循以下规则:1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。a.若两种类型的字节数不同,转换成字节数高的类型b.若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。4)char型和short型参与运算时,必须先转换成int型。5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边 阅读全文
posted @ 2012-04-09 12:04 h13 阅读(9709) 评论(0) 推荐(3) 编辑

摘要:mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。 下面是一个小例子:class ClxTest{ public: void Output() const;};void ClxTest... 阅读全文
posted @ 2011-12-27 12:03 h13 阅读(393) 评论(0) 推荐(0) 编辑

摘要:在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!如果不扯得太远的话(比如说操作系统中虚拟内存和物理内存如何运做如何管理之类的知识等),我感觉这篇文章应该是比较全面地谈了一下malloc()和free().这篇文章由浅入深(不见得有多深)分三个部分介绍主要内容。废 阅读全文
posted @ 2011-07-26 18:56 h13 阅读(620) 评论(0) 推荐(0) 编辑

摘要:一、一定要养成一个规范标准的代码排版格式,好的排版会让帮助你的人事半功倍。二、一定要培养自己查找错误的能力,要记住别人只帮你一时。三、一定要养成写注释的习惯,特别是你的代码要给别人看时。四、遇到问题,一定不要立刻问别人,其实很多问题都是自己不小心所致,回头看看书你可能会明白原来这也很简单。五、多看看头文件中的内容,它能告诉你标准地调用库函数的方法。六、书上的程序其实都是比较经典的,何不在上机运行一下这些程序,看看你对程序的理解力是怎么样的。七、优秀的程序员不只对书本上的知识了解很透澈,而且对更深层次的知识有着强烈地吸引力。八、一定要跟上世界的脚步,闭门造车会导致你失败的很重要的原因。九、一定要 阅读全文
posted @ 2011-07-26 17:52 h13 阅读(917) 评论(0) 推荐(1) 编辑

摘要:面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1 #include <iostream.h> void fn(); static int n; //定义静态全局变量 void main() { n=20; cout<<n<<endl; fn(); } void fn() { n++; cout<<n<<endl; } 静态全局变量有以下特点: 该变量在全局数据区分配内存; 未经初始化的静态全局变量会被 阅读全文
posted @ 2011-03-23 10:06 h13 阅读(1030) 评论(0) 推荐(0) 编辑

摘要:假设在test.h中定义了一个static bool g_test=false;若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=true,而test2.c中仍然为false并未改变!shit!!一、c程序存储空间布局C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初 阅读全文
posted @ 2011-01-19 17:18 h13 阅读(2321) 评论(0) 推荐(0) 编辑

摘要:char :单字节变量类型,最多表示256个字符,wchar_t :宽字节变量类型,用于表示Unicode字符,它实际定义在string.h里:typedef unsigned short wchar_t。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下: wchar_t c = `A' ; wchar_t * p = L"Hello!" ; wchar_t a[] = L"Hello!" ;其中,宽字节类型每个变量占用2个字节,故上述数组a的sizeof(a) = 14TCHAR / _T( ) : 如果在程序中既包括ANSI又包括Unicode编码 阅读全文
posted @ 2010-08-25 10:35 h13 阅读(1041) 评论(0) 推荐(1) 编辑