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

第二章
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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值