API入門系列之三 -那迷惑人的Windows字元和字元指標類型

來源:互聯網
上載者:User

大家好,通過前面兩篇打頭文章,我也看了留言,感謝那些給我提意見的人和指出錯誤之處的人。再次謝謝你們的支援。另外,Windows SDK編程交流群已經建立了,歡迎各位志同道合者加入進行交流(群號:81543028)

本打算通過前面兩篇文章的講解,後來的系列就可以通過使用一些簡單的,常用的API寫一些樣本程式的講解進行,但是發現還有一個不得不先講一講的要點,Windows下和字串操作有關的資料類型。我看留言中也有幾位朋友提到了,那我就在這篇中講它吧。不會很枯燥的,各位慢慢看下去就是了。

下面我羅列一些我們在Windows平台下編程經常使用到的和字元或字串有關的資料類型。

char和wchar_t

這兩個類型大家絕對不會陌生吧,一個是單位元組的字元類型,一個是寬位元組的字元類型(也就是 Unicode字元)。

char   c = 'b';

wcha_t  wc = L'b';

上面我就分別定義了2個變數c和wc ,相信第一個定義大家都看的懂,就是定一個字元變數c,其中 儲存了'b'這個字元。那麼第二個呢?  我相信還是很多人都看的懂,要是你看不懂也沒關 系,現在就告訴你,也是定義一個字元變數wc, 只不過這個字元變數是Unicode字元變數,用2個位元組 來儲存一個字元,而上面的c這個字元變數只有一個位元組來儲存,那麼在'b'前面的L又是什麼意 思呢,它就表示這裡的'b'這個字元是一個Unicode字元,所以第二個定義的意思就是將 L'b'這個Unicode字元儲存到wc這個Unicode字元變數中。

如果我要定義一個字元數組怎麼定 義呢? 用分別用單位元組的char和寬位元組的wchar_t來定義就應該是:

char  c[10];

wchar_t wc[10];

如果是要帶初始化的字元數組的聲明,我們來看看怎麼寫

char c[] = "beyondcode";

wchar_t wc[] = L"beyondcode";

看到了嗎,寬位元組的操作其實和單位元組的字元操作一樣吧,只是在前面加上L表示是寬位元組的字元或 者字串。

上面都是屬於C/C++中的知識,並沒有涉及太多Windows中的資料類型,那麼各位朋友們在Windows編 程中看到的滿到處都是的 TCHAR,LPSTR, LPCSTR, LPWSTR, LPCWSTR, LPTSTR, LPCTSTR 這些數 據類型又是怎麼回事呢? 別急,我們一步一步的來,最後我會聯絡到那上面去的。

上面的你都知道或者是理解了的話,那我們繼續,除了可以聲明一個字元數組,我還可以定義一個字 符指標變數來指向一個字元數組,當然這個字元數組可以是Unicode的寬位元組字元數組,也可以是單位元組 字元數組,如下:

char  c[] = "hello beyondcode"; //定義一個字元數組

wchar_t  wc[] = L"hello beyondcode"; //定義一個寬位元組字元數組

char   *p = c; //定義一個字元指標,指向剛才的字元數組

wchar_t *wp = wc; //定義一個寬位元組字元指標,指向剛才的寬位元組字元數組

這樣之後,我就可以通過指標來改變剛才我們定義的2個數組,例如:

p[0] =  'H';

wp[0] = L'H';

把上面2個數組的第一個字元通過指標改變成大寫。這裡是可以通過指標來修改的,因為我沒有定義 指標為常量指標,也就是沒有加const 修飾符。如果我像下面這樣定義的話,那麼就不能通過這些指標 來改變他們所指向的資料了,而是只有讀取他們。

const  char  *p = c;

const  wchar_t  *wp = wc;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.