sizeof和strlen區別


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

sizeofstrlen的區別

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM