關於C++中strlen(str)和sizeof(str)


首先我們來看一段測試吧

#include"stdio.h"

main(){
    char str[10] = "I am Limor宸";
    printf("%d %d",sizeof(str),strlen(str));
}

輸出的結果是:

從結果中我們可以看出sizeof(str)輸出的是10而strlen(str)輸出的結果是11那么是為什么呢?

 我們來看看sizeof和strlen的區別

  strlen在計算字符串長度的時候,是以‘\0’為字符串結束的標志。

  sizeof是以分類的數組的實際所占的內存空間大小來計算長度的。

我們再來看看如果給定的分配空間比實際占用空間長的情況:

#include"stdio.h"

main(){
    char str[50] = "I am Limor宸";
    printf("%d %d",sizeof(str),strlen(str));
}

這時候我給str這個字符數組初始分配了50個空間,但是只占用了11個空間。

 

結果的話sizeof計算出來是50為str字符串數組所占用的實際空間

而strlen計算的結果是12,在后面沒有被聲明的空間沒有被計算。

由此可見sizeof計算的是該數組占用的空間大小,strlen計算的是字符串的長度並吧'\0'結尾符也算作一個單位但是null並不計算。


免責聲明!

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



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