5.2 字串和陣列規範

這一章說明陣列或記憶區塊的工作函式,跟以null結尾的字元和寬字元陣列的特定函式。

在記憶區塊上操作的函式名稱開頭會以 ‘mem’ 和 ‘wmem’命名(像是memcpy 跟wmemcpy)並且都會有一個引數指定記憶區塊的大小(位元組和寬字元)來操作,這些函式的陣列引數會傳回型態void * 或wchar_t的值,因為風格的關係,使用'mem'的函式其陣列元素會以"位元組"來參考,你可以傳遞任何種類的指標給函式,而sizeof運算子在計算引數的大小值時很有用, ‘wmem’函式的參數型態會是wchar_t *,這些函式不是任何東西都能用而是只有這個型態的陣列可以使用。

相對之下,在字串和寬字元字串上操作的函式名稱開頭會分別以 ‘str’跟 ‘wcs’命名(像是strcpy與wcscpy)並且會尋找結束字串的空字元而不需要明確的引數大小來傳遞,(有些函式接受最大長度的指定,但它們也會檢查過早的空字元結束,)這些函式的陣列引數和傳回值的型態分別是char * 跟wchar_t *,陣列的元素會以 “characters”跟 “wide characters”來參考。

在許多情況下,一個函式會有 ‘mem’和‘str’/‘wcs’兩個版本,依據正確的情況使用較適合的那一個,當你的程式處理陣列或是記憶區塊時,可以使用 ‘mem’函式,另一方面除非你已先知道字串的長度,否則當你處理空字元結束的字串時使用’str’/’wcs’函式通常會比較方便, ‘wmem’函式應該使用在已知大小的寬字元陣列。

一些記憶體和字串函式會以單一字元做為引數,由於在做為參數使用的時候型態char的值會自動地促使成為型態int的值,因此正在考慮這些函式的參數使用int型態來宣告,寬字元函式的情況也是類似:單一寬字元的參數型態是wint_t而不是wchar_t,這在很多實作上是不需要的因為wchar_t大到不能自動被促成,但ISO C標準也不需要這樣的型態wint_t使用。

下一節:字串長度,上一節:字串的表示,這一章:字串和陣列的工具

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *