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.