ASCII and Unicode

ACSII:American Standard Code for Information Interchange,美国信息交换标准码。
每个代码7位;
一共128个代码(26个小写字母,26个大写字母,10个数字,32个符号,33个控制代码和一个空格);

Unicode:宽字符集。
Unicode中的每个字符都是16位宽。
前128个Unicode字符(16位代码从0x0000 到 0x007F)是ACSII,而接下来的128个Unicode字符(代码从0x0080 到 0x00FF)是ISO 8859-1对ASCII的扩展。
Unicode字符串占用的内存是ASCII字符串的两倍。

ANSI C:美国国家标准编程语言——C。
DBCS:double-byte character set,双字节字符集。
ISO:International Standards Organization,国际标准化组织。

Intel微处理器首先从最低位字节开始存储多字节数值,所以:
typedef unsigned short wchar_t;
wchar_t c = 'A'; // 宽字符0x0041,16位宽。在内存中是以0x41,0x00的顺序保存的。

定义指向宽字符串的指针:
wchar_t *p = L"Hello!"; // 大写字母L(代表long),告诉编译器该字符串按宽字符保存——即每个字符占用2个字节。
指针变量p要占用4个字节,而字符串变量需要14个字节——每个字符需要2个字节,末尾的0(空结束符)还需要两个字节。

posted @ 2011-12-13 21:18 梦五 阅读(273) | 评论 (0)编辑 收藏

空指针和迷途指针的区别

1. 当delete一个指针的时候,实际上仅是让编译器释放内存,但指针本身依然存在。这时它就是一个迷途指针。
当把迷途指针赋值为0时,变为空指针。

2. 如果试图删除迷途指针,程序会变得非常不稳定,任何情况都有可能发生。
但是如果只是删除一个空指针,则很安全。

3. 对迷途指针或者空指针解除指针的引用,是非法的,有可能会造成程序崩溃。如果指针是空指针,尽管同样是崩溃,但它同迷途指针
造成的崩溃相比是一种可预料的崩溃。调试起来方便得多。


posted @ 2011-12-08 16:10 梦五 阅读(630) | 评论 (0)编辑 收藏

数组名

数组名是数组的首地址,是一个常量指针。
int a[5];   // a是代表数组的首地址,是一个常量指针。
a++;       // error,常量指针,不能修改。
a+1;       // right,指向数组中的第二个元素,数组的下标从0开始。

posted @ 2011-12-08 10:19 梦五 阅读(128) | 评论 (0)编辑 收藏

const常量定义

const 常量定义时,必须同时初始化。
如:
const double di; // 错误,没有初始化。

posted @ 2011-12-06 17:19 梦五 阅读(173) | 评论 (0)编辑 收藏

原子访问(atomic access)

所谓原子访问,指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源。

posted @ 2011-11-30 11:32 梦五 阅读(378) | 评论 (0)编辑 收藏

内联函数 和 宏

内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被嵌入到目标代码中。

宏只是一个简单的替换。

内联函数要做参数类型检查,这是内联函数跟宏相比的优势。

宏不是函数,只是在编译前(编译预处理阶段)将程序中有关字符串替换成宏体。

inline函数时函数,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。

inline一般用于如下情况:
1. 一个函数被不断重复调用。
2. 函数只有简单的几行,且函数内不包含for,while,switch语句。

posted @ 2011-11-30 10:41 梦五 阅读(131) | 评论 (0)编辑 收藏

静态变量 和 sizeof

静态变量存放在全局数据区,sizeof计算栈中分配的内存大小,所以sizeof不会计算类中静态数据成员的大小,如:
class A1
{
public:
  
int a;
  
static int b;

  A1();
  
~A1();
}
;  
sizeof(A1) = 4; // 静态数据成员b的大小没有计算在内.

posted @ 2011-11-30 09:25 梦五 阅读(545) | 评论 (0)编辑 收藏

空类

class A {

}
;
sizeof(A) = ?
对于一个类而言,即便它是一个空的类,编译器仍然要给它一个空间,所以类A即便什么都没有,它的空间大小依然是1。
sizeof(A) = 1;

posted @ 2011-11-30 09:15 梦五 阅读(110) | 评论 (0)编辑 收藏

const常量

1. const关键字的用法:
在C程序中,const的用法主要有定义常量、修饰函数参数、修饰函数返回值等3个用处。
在C++程序中,它还可以修饰函数的定义体,定义类中某个函数为恒态函数,即不改变类中的数据成员。

被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

2. const 与 #define宏的区别:
2.1 const常量有数据类型,而宏常量没有数据类型。编译器可以对const常量进行类型安全检查,而对宏常量只进行字符替换,没有类型安全检查,
      并且在字符替换中可能会产生意料不到的错误(边际效应)。
2.2 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

在C++程序中只使用const常量而不使用宏常量。

posted @ 2011-11-29 23:02 梦五 阅读(183) | 评论 (0)编辑 收藏

前台进程 and 后台进程

如果用户需要使用某个进程的窗口,这个进程就称为前台进程(foreground process),而所有其他的进程称为后台进程(background process).

posted @ 2011-11-29 10:47 梦五 阅读(286) | 评论 (0)编辑 收藏

仅列出标题
共3页: 1 2 3 
<2011年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜