strlen 與sizeof()的區別
情感
08-27
這兩個都是計算機語言,strlen所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字元串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字元串結束符" "為止,然後返回計數器值(長度不包含" ")。sizeof()是運算符,可用於任何變數名、類型名或常量值,當用於變數名(不是數組名)或常量時,它不需要用圓括弧。它在編譯時起作用,而不是運行時。
sizeof後如果是類型必須加括弧,如果是變數名可以不加括弧。這是因為sizeof是個操作符不是個函數。
sizeof返回定義arr數組時,編譯器為其分配的數組空間大小,不關心裏面存了多少數據。strlen只關心存儲的數據內容,不關心空間的大小和類型。
sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以"" ""結尾的
sizeof是算符,strlen是函數
sizeof(x)可以用來定義數組維數,大部分編譯程序在編譯的時候就把sizeof計算過了
數組做sizeof的參數不退化,傳遞給strlen就退化為指針了
如果要獲得這個字元串的長度,則一定要使用 strlen,sizeof()函數返回的是變數聲明後所佔的內存數,不是實際長度。
08
數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址。


TAG:生活中的小知識 |