sizeof和strlen的在char*和char[]的區別

strlen 測量的是字符的實際長度,以’\0’ 結束。而sizeof 測量的是字符的分配大小。

char *p = "123456789";
 //sizeof此時計算的是指針的大小,所以輸出爲4
 sizeof(p)
  //strlen此時計算的是字符串的長度,不加\0,此時爲9
strlen(p)
char p[] = "123456789";
 //sizeof此時計算的是字符的分配長度,包括結束符\0,所以輸出爲10
 sizeof(p)
  //strlen此時計算的是字符串的長度,不加\0,此時爲9
strlen(p)
char p[] = {'1','2','3','4','5','6','7','8','9',0};
 //sizeof此時計算的是字符的分配長度,包括結束符\0,所以輸出爲10
 sizeof(p)
  //strlen此時後面0是結束符,此時爲9
strlen(p)
char p[] = {'1','2','3','4','5','6','7','8','9'};
 //sizeof此時計算的是字符的分配長度,沒有輸入結束符,所以輸出爲9
 sizeof(p)
  //strlen此時計算的是字符串的長度,但後面沒有初始化也沒增加結束符,所以得到錯誤的結果35
strlen(p)
int s[] = {1,2,3,4,5};
//此時爲int型的數組,我們可以用sieof求取分配空間的大小爲5 * sizeof(int) = 20
sizeof(s)
//此時,我們無法用strlen得到數組的元素個數,可以採用
sizeof(s)/sizeof(s[0])進行計算
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章