為什么字符數組要以\0結尾


一個數組能不能把數組元素大小作為一個元素放在數組的末尾

如果是char類型數組

char string[6]={'h','e',l',l','o',5};

我覺得是可以的,但是如果這個數組元素比較長,而程序員不小心把有可能就把最后一個元素當作字符來輸出了,這時候會影響到程序,所以直接數組大小作為數組最后一個元素這種方式是有隱患的。

‘\0’這個字符即作為一個字符不經常被用來當作實用的字符,而且就算被輸出了也沒有影響,因為是不可見的字符。

所以可以換一種方式,把數組最后一個元素設置為‘\0’,然后把它當作一個標志,那么程序中只要檢測這個字符就可以知道這個字符數組的大小了。

其實char數組以\0結尾只是為了兼容strlen這種c標准庫的函數的,為什么strlen要檢測\0來判斷字符串長度,可能是c標准就是這樣吧,我覺得這個東西是歷史遺留問題了,沒辦法改變的,除非標准變了。

 

 

int類型數組,為什么就沒有\0這回事情。

如果把int類型數組大小作為數組最后一個元素是不行的,也存在那種把最后一個元素當作元素來輸出的。

如果像int類型那樣的思路,把'\0'作為數組結束的標志,不行,因為\0 在內存中是以0x00來存放的,而數字0 是一個常用的字符。

最后就不了了之了,如果你真的需要在函數中用到數組的大小,那么直接把大小當作參數傳遞進去就可以了。

 

 

因為c語言不是面向對象的,如果是面向對象的,那么一個string類型就可以直接用來存放字符串,然后設置一個屬性專門用來存放字符串的大小即可,不用折騰\0這回事情。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM