strlen和sizeof有什麼區別

區別:

一、定義不同

sizeof是運算符,在頭文件中typedef爲unsigned int,其值在編譯時即計算好了,參數可以是數組、指針、類型、對象、函數等。

2、它的功能是:獲得保證能容納實現所建立的最大對象的字節大小。具體而言,當參數分別如下時,sizeof返回的值表示的含義如下:數組——編譯時分配的數組空間大小;指針——存儲該指針所用的空間大小(存儲該指針的地址的長度,是長整型,應該爲4)。

二、語法不同

1、strlen是函數,要在運行時才能計算。參數必須是字符型指針。當數組名作爲參數傳入時,實際上數組就退化成指針了。

2、它的功能是:返回字符串的長度。該字符串可能是自己定義的,也可能是內存中隨機的,該函數實際完成的功能是從代表該字符串的第一個地址開始遍歷,直到遇到結束符NULL。返回的長度大小不包括NULL。

擴展資料

1、sizeof是算符,strlen是函數。 數組做sizeof的參數不退化,傳遞給strlen就退化爲指針了。strlen所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字符串結束符'\0'爲止,然後返回計數器值(長度不包含'\0')。

2、sizeof操作符的結果類型是size_t,它在頭文件中typedef爲unsigned int類型。該類型保證能容納實現所建立的最大對象的字節大小。

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