利用strlen和sizeof求取字符串長度注意事項


首先,strlen是函數,sizeof是運算操作符,二者得到的結果類型為size_t,即unsigned int類型。大部分編譯程序在編譯的時候就把sizeof計算過了,而strlen的結果要在運行的時候才能計算出來。

 

對於以下語句:

char *str1 = "asdfgh";
char str2[] = "asdfgh";
char str3[8] = {'a', 's', 'd'};
char str4[] = "as\0df";

執行結果是:

sizeof(str1) = 4;  strlen(str1) = 6;
sizeof(str2) = 7;  strlen(str2) = 6;
sizeof(str3) = 8;  strlen(str3) = 3;
sizeof(str4) = 6;  strlen(str4) = 2;

str1是字符指針變量,sizeof獲得的是該指針所占的地址空間,32位操作系統對應4字節,所以結果是4;strlen返回的是該字符串的長度,遇到'\0'結束,'\0'本身不計算在內,故結果是6。

str2是字符數組,大小由字符串常量"asdfgh"確定,sizeof獲得該數組所占內存空間大小,包括字符串結尾的'\0',所以結果為7;strlen同理返回6。

str3也是字符數組,但大小確定為8,故sizeof得到的結果是8;strlen統計'\0'之前所有字符的個數,即為3;

str4是常量字符數組,sizeof得到字符總數即6;strlen計算至'\0'結束,因此返回2;

 

總結一句就是sizeof計算的是變量的大小,而strlen計算的是字符串的長度,前者不受字符'\0'影響,后者以'\0'作為長度判定依據。

原文:https://blog.csdn.net/shudaxia123/article/details/47753505


免責聲明!

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



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