首先我們來看一段測試吧
#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並不計算。