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。

發佈了38 篇原創文章 · 獲贊 10 · 訪問量 9131
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章