基於指標和基於陣列的字串初始化的字串長度和大小計算的不同輸出
理解結果
理解結果<code class="c">char *str1 = "Sanjeev"; char str2[] = "Sanjeev";</code>
理解結果
>但是,sizeof 會產生不同的值:
sizeof(str1) 傳回4,因為它計算指標變數的大小,通常為4 個位元組(32 位元系統) 。 sizeof(str2) 傳回 8,因為它決定陣列的大小,其中包括空終止符,從而產生 8 個位元組(7 個字元 1 個空終止符)。基本差異:資料類型與記憶體分配
<code class="c">char str2[8]; strncpy(str2, "Sanjeev", 7); char *str1 = str2;</code>sizeof 測量資料類型的大小,而 strlen 測量字元序列的長度。對於str1,它是一個指向char的指針,因此sizeof傳回指標的大小。對於 str2,它是一個字元數組,因此 sizeof 傳回整個數組的大小,包括空終止符。
現在,str1 和 str2 都指向同一個陣列。它們的strlen 值為7,但它們的sizeof 值不同:
sizeof(str1) 為4(指標大小)sizeof(str2) 為8(帶有空終止符的陣列大小) )這說明了大小評估如何取決於底層資料結構。以上是為什麼 C 中基於指標和基於陣列的字串的「strlen」和「sizeof」產生不同的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!