在C 程式設計中,使用指標和陣列來初始化字串可能會導致意想不到的差異strlen 和sizeof 的輸出。讓我們透過檢查特定範例來分析這種現象。
提供的程式碼片段:
<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
因下列原因而出現變化指標和陣列在資料類型和物件大小方面的根本差別。
指標 (str1)
Array (str2)
為了進一步說明這些概念,讓我們稍微修改一下程式碼:
<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>
這段程式碼將以 strlen: 7 的形式對 str1 和 str2 產生相同的結果。但是,sizeof(str1) 將保持為 4,表示記憶體位址,而 sizeof(str2) 將調整為 8,仍然考慮空終止字元。
因此,關鍵要點是在 C 程式設計中使用字串時了解指標和陣列的不同資料類型和大小特徵。
以上是為什麼 C 中指標和陣列字串初始化時「strlen」和「sizeof」給出不同的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!