C++與數據結構常見知識點(二)

C++與數據結構常見知識點(一)

30 strlen()與sizeof

strlen只能用char*做參數,且該char數組必須是以’’/0’'結尾的。

數組做sizeof的參數不退化,傳遞給strlen就退化爲指針了。
詳細說明可參見: 百度知道: strlen和sizeof有什麼區別?

注意:大部分編譯程序 在編譯的時候就把sizeof計算過了 是類型或是變量的長度這就是sizeof(x)可以用來定義數組維數的原因 。
所以,sizeof 即使在字符數組沒有終止符’/0’ 的時候,也能夠計算出數組“長度”的原因,但這裏的“長度”實際上是:編譯器分配給該數組變量的內存大小!
例如:char chs[] = {‘a’, ‘c’, ‘/0’, ‘z’, ‘3’,‘d’}; // sizeof(chs) = 6; 而strlen(chs) = 2.

Reference
C語言中,當計算字符數組長度時,用sizeof 和strlen 的原理及兩者的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章