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