sizeof和strlen區別與不同

2021-07-03 13:36:31 字數 788 閱讀 1079

sizeof是乙個

操作符關鍵字,返回的結果為 size_t  (typedef unsigned int size_t;)

sizeof的引數可以是資料型別,也可以是變數,無論是變數還是資料型別,都會轉化為資料型別作為引數,因為在c語言中變數是有型別的。

發生在編譯時候就計算出了sizeof結果

sizeof計算的是資料型別佔記憶體的大小

陣列做sizeof引數不退化。

char a[5]

int b[5]

sizeof(a)   sizeof(b) ,這時候的引數不是作為指標傳遞,故為不退化

sizeof(a)結果為5,因為char型別為1

sizeof(b)結果為10或者20,因為int型別在16位機器(2個位元組),32位機器(4個位元組)下不同

即不同字長度的機器上整型資料的長度。

指標變數的長度和其指向的資料型別沒有關係,而與機器位數有關係,16位機器就是2個位元組,32位機器就是4個位元組

strlen是庫函式 返回的結果為 size_t  (typedef unsigned int size_t;)

strlen只能以結尾為'\0'的字串做引數

strlen是必須執行時才能計算出來

strlen是計算字串的實際長度,不包括'\0'

strlen就會退化為指標。

sizeof和strlen的區別

sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...

strlen和sizeof的區別

sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...

sizeof和strlen的區別

sizeof和strlen都可以用來求變數的長度,但兩者之間還是有很大的區別的。首先,從2個例子講起 例1 charss 100 0123456789 sizeof ss 結果為100 ss表示在記憶體中預分配的大小,100 1 strlent ss 結果為10 它的內部實現是用乙個迴圈計算字串的長...