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