ASCII和UNICODE对应的char ,wchar_t存储字符
ASCII:
char buf[10]="你好啊!" ;//buf长度大于等于9否则会越界
内存中: c4 e3 ba c3 b0 a1 a3 a1 00 00;每个中文字符占据2个char
char buf2[10] = "good" ;//长度大于等于5即可
内存中: 00 6f 6f 64 00 00 00 00 00 00 : 每个字母占据1个char
UNICODE:
wchar_t wbuf[5]=_T("你好啊!" );//长度大于等于5
内存中: 00 00 7d 59 4a 55 01 ff 00 00 :每个中文字符占据2个char
wchar_t wbuf2[5]=_T("good" );//长度大于等于5
内存中: 00 00 6f 00 6f 00 64 00 00 00 : 每个字母占据wchar_t的高位
buf[0] = 0 ;只对第一个char赋值为0,即是c4=0;00 e3 ba c3 b0 a1 a3 a1 00 00
buf2[0] = 0;
wbuf[0] = 0 ;使两个char宽度为0 : 00 00 7d 59 4a 55 01 ff 00 00
wbuf2[0] = 0 ;
以上可以看出,在使用char类型存储中文字符与英文字符是所需的编码长度是不一样的;
wchar_t则都是相同的,对于程序移植性和通用性来说更好;