sizeof和strlen的區別

在我們平時寫代碼的過程中,我們會經常用到sizeof和strlen,那麼他們到底有什麼區別呢,我簡單總結了以下幾點:
(1)sizeof是運算符,strlen是函數
(2)sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以”\0”結尾的。
這裏寫圖片描述
(3)strlen 測量的是字符的實際長度,以’\0’ 結束。而sizeof 測量的是字符的分配大小。
這裏寫圖片描述
(4)strlen的結果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型佔內存的大小。
(5)sizeof 如果計算類型的大小時要加(),即sizeof(int);如果是變量名可以不加()
這裏寫圖片描述
(6)數組做sizeof的參數不退化,傳遞給strlen就退化爲指針了。
(7)當使用了於一個結構類型時或變量, sizeof 返回實際的大小,當使用一靜態地空間數組, sizeof 歸還全部數組的尺寸。
(8)sizeof操作符的結果類型是size_t,它在頭文件中typedef爲unsigned int類型。
該類型保證能容納實現所建立的最大對象的字節大小。
(9)可以用sizeof(arr)/sizeof(arr[0])求數組元素的個數。

發佈了115 篇原創文章 · 獲贊 74 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章