基於指標和基於數組的字串初始化的字串長度和大小計算的不同輸出
了解結果
當建立具有相同值的基於指標的字串str1 和基於陣列的字串str2 時,函數strlen 和sizeof會產生不同的結果。具體來說,對於聲明:
char *str1 = "Sanjeev";
char str2[] = "Sanjeev";
strlen 對於 str1 和 str2 都傳回 7,因為它測量字元序列的長度,不包括最後的空終止符 (\0)。
但是,sizeof 產生不同的值:
根本差異:資料型別與記憶體分配
sizeof 測量資料型別的大小,而 strlen 測量字元序列的長度。對於str1,它是一個指向char的指針,因此sizeof傳回指標的大小。對於 str2,它是一個字元數組,因此 sizeof 傳回整個數組的大小,包括空終止符。
仔細查看
來示範更好區分,考慮:
char str2[8];
strncpy(str2, "Sanjeev", 7);
char *str1 = str2;
現在,str1和str2都指向同一個陣列。它們的strlen 值為7,但它們的sizeof 值不同:
這舉例說明了大小評估如何取決於基礎資料結構。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3