天天看點

sizeof和strlen差別

最近在看c++,想計算輸入字元串的長度時用的是sizeof(point)/sizeof(char) - 1 ;但是結果總是固定的3,後來我換成strlen()就可以了,于是百度了一下

sizeof和strlen的差別

strlen計算字元串的長度,以’\0’為字元串結束标志

sizeof是配置設定的數組實際所占的記憶體空間大小,不受裡面存儲内容

例如

char *str = “1111111abcd”;

char str1[9] = {1};

sizeof(str) = 4; //是指指針所占的位元組大小,在c/c++中一個指針占4個位元組(32位系統)

sizeof(str1) = 9;

sizeof()是運算符,由于在編譯時計算,是以sizeof不能用來傳回動态配置設定的記憶體空間的大小。實際上,用sizeof來傳回類型以及靜态配置設定的對象、結構或數組的空間,傳回值跟這些裡面所存儲的内容沒有關系。

具體而言,當參數分别如下時,sizeof傳回的值含義如下:

數組-編譯時配置設定的數組空間大小

指針-存儲該指針所用的空間大小

類型-該類型所占的空間的大小

對象-對象的實際占用空間大小

函數-函數傳回類型所占空間的大小

strlen()是函數,可以計算字元串的長度,直到遇到結束符NULL才結束,傳回的長度大小不包含NULL

繼續閱讀