天天看點

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。

繼續閱讀