1、本質區別
sizeof()是乙個運算子,給出運算元所佔空間的大小,在此運算元可以是變數,資料型別或者函式等等。(其實就是計算運算元的資料型別所佔空間的大小,不管運算元是什麼(陣列也是一樣的,只不過是陣列中存放有陣列大小個相同的資料,資料型別都是一樣的),只需要看其資料型別,然後計算sizeof(該資料型別)的大小就可以)。
strlen()本質上是乙個函式,並且引數必須是char * ,該函式的計算必須依賴『\0』作為結束標誌。
對於陣列型別:陣列名傳遞給sizeof,則給出陣列所佔空間的大小;傳遞給strlen()函式,陣列名則退化為乙個指標型別。
2、其他區別
其實只要理解了上述的本質區別其他的區別都可以理解了。
1、strlen的結果要在執行的時候才能計算出來,用來計算字串的長度,而不是型別佔記憶體的大小。
2、當使用乙個結構型別或變數時,sizeof返回實際的大小。當使用一靜態的空間陣列時,sizeof返回全部陣列的尺寸。sizeof操作符不能返回被動態分配的陣列或外部的陣列的尺寸。
3、計算結構變數的大小就必須討論資料對其問題。
4、大部分編譯程式在編譯的時候就把sizeof計算過了,是型別或是變數的長度。這就是sizeof(x)可以用來定義陣列位數的原因。
5、strlen的結果要在執行的時候才能計算出來,用來計算字串的長度,而不是型別佔記憶體的大小
sizeof求位元組以及與strlen的區別
例子一 根據以下條件進行計算 1 結構體的大小等於結構體內最大成員大小的整數倍 2 結構體內的成員的首位址相對於結構體首位址的偏移量是其型別大小的整數倍,比如說double型成員相對於結構體的首位址的位址 偏移量應該是8的倍數。include include using namespace std ...
C語言中的strlen與sizeof的區別
sizeof與strlen是有著本質的區別,sizeof是求資料型別所佔的空間大小,而strlen是求字串的長度,字串以 0結尾。區別如下 1 sizeof是乙個c語言中的乙個單目運算子,而strlen是乙個函式,用來計算字串的長度。2 sizeof求的是資料型別所佔空間的大小,而strlen是求字...
C語言中的strlen與sizeof的區別
sizeof與strlen是有著本質的區別,sizeof是求資料型別所佔的空間大小,而strlen是求字串的長度,字串以 0結尾。區別如下 1 sizeof是乙個c語言中的乙個單目運算子,而strlen是乙個函式,用來計算字串的長度。2 sizeof求的是資料型別所佔空間的大小,而strlen是求字...