由於指標和陣列初始化,Strlen 和Sizedof 的不同輸出
在C 程式設計中,sizeof 和strlen 函數提供有關大小和大小的資訊分別是資料類型的長度。但是,在處理指標和陣列時,這些函數的輸出可能不同,從而導致混亂。
考慮以下示例:
<code class="c">char *str1 = "Sanjeev"; char str2[] = "Sanjeev"; printf("%d %d\n", strlen(str1), sizeof(str1)); printf("%d %d\n", strlen(str2), sizeof(str2));</code>
此代碼的輸出是:
7 4 7 8
解釋:
為了進一步闡明差異,請考慮對程式碼進行以下修改:
<code class="c">char str2[8]; strncpy(str2, "Sanjeev", 7); char *str1 = str2; printf("%d %d\n", strlen(str1), sizeof(str1)); printf("%d %d\n", strlen(str2), sizeof(str2));</code>
在這種情況下,輸出將是:
7 4 7 8
即使str1 和str2 現在都引用同一個字串,sizeof(str1) 仍然會傳回指標的大小。這是因為 str1 是指向數組第一個元素的指針,而 str2 是字元數組。
以上是為什麼 C 中的指標和陣列的「strlen」和「sizeof」會產生不同的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!