Windows程序设计 读书笔记(2)

来源:互联网 发布:sql的distinct怎么删除 编辑:程序博客网 时间:2024/06/02 00:39

第二章
2.2.1 char数据类型
声明和初始化一个包含单一字符变量:
char c = ‘A’
变量c需要一个字节的存储空间而且会用十六进制0x41来初始化。
定义一个指向字符串的指针:
char *p;
该指针需要用4个字节的空间。初始化为p=“Hello!”之后仍然需要4个字节的存储空间。字符串存储在静态内存中并使用7个字节的存储孔家。(其中包括6个字节存储字符串和一个字节存储表是字符串结束的\0);

2.2.2 宽字符
wchar_t c=’A’;其中c是16位宽的。但是需要注意的是Intel微处理器存储多字节时,总是最低字节优先,所以存储的顺序是:0x41,0x00。

宽字符指针
wchar_t *p=L”Hello!”;
存储p的内存需要14个字节——每个字符需要两个字节,再加上最后的\0需要两个字节。
这里有个问题需要注意一下:
如果strlen(p)得到的结果会是1。本来结果应该是等于6的,但是为什么结果会是等于1呢?事实上是这样的:字符串“Hello!”的6个字符包含的16位值如下:
0x0048,0x0065,0x006C,0x006C,0x006F,0x0021,这些值被Intel处理器以下面这种方式存储在内存中:48 00 65 00 6C 00 6F 00 21 00
所以计算第一个字节为字符,但是认为第二个是一个表明字符串结尾的\0。

原创粉丝点击