字串宣告中的陣列與指標:char a[] 與char *p
在C 程式設計中,宣告與宣告之間存在區別處理字串時的字元陣列和字元指標。您提到的語法“char a[] = string;”和“char *p = 字串;”演示了這種差異。
數組版本:char a[] = string
此語法聲明一個字元數組“a”,其大小會自動確定以容納字串文字“string” 。此陣列使用字串的字元(包括空終止符)進行初始化。數組的大小在編譯時已知,允許您使用“sizeof”運算符來確定其長度。您可以稍後修改數組中的字元。
指標版本:char *p = string
此語法宣告一個指向字串的指標 'p'字面意思是「字串」。這是比數組版本更快的方法,但禁止修改“p”指向的字符,因為它們駐留在內存的唯讀部分中。修改此類字串文字會導致未定義的行為。
C 中的棄用和最佳實踐
在 C 中,不建議使用不含 'const' 關鍵字的字串文字。指標版本的首選聲明是:
const char *p = "string";
此外,避免使用 'sizeof' 來確定指標指向的字串的大小。相反,請使用“strlen()”函數。
在數組和指針之間進行選擇
使用數組或指針的選擇取決於您的場景:
C 註解
此差異特定於 C且不適用於 C 。在 C 中,可以在沒有「const」的情況下使用字串文字,但修改它們仍然是未定義的行為。在 C 中,這種用法是非法的。
以上是C 中的字元陣列與字元指標:何時應該對字串使用「char a[]」與「char *p」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!