一個數組能不能把數組元素大小作為一個元素放在數組的末尾
如果是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這回事情。