首頁 >後端開發 >C++ >C 中「char*」和「char[]」有什麼不同?

C 中「char*」和「char[]」有什麼不同?

Barbara Streisand
Barbara Streisand原創
2024-10-27 04:47:02786瀏覽

 What's the Difference between `char*` and `char[]` in C?

理解char* 和char[]

在C 程式設計中處理字元陣列和指標時,掌握char str[] = "Test "; 之間的根本區別和char *str = "Test";.

char str[] = "Test";

在此聲明中,str表示字元(chars)陣列具有固定大小,用字串“Test”的內容初始化。該數組擁有自己的內存,並且與原始字串文字不同。對 str 的任何修改都會改變資料的本機副本,而不是「Test」字串本身。

char *str = "Test";

這裡,str是一個指針,特別是指向字串文字「Test」的第一個字元的指針。指標儲存的是該字元的記憶體位址。然而,重要的是要記住 str 並不擁有儲存字串的記憶體;它擁有儲存字串的記憶體。相反,它指向只讀(const)字串文字。因此,任何更改 str 指向的字串的嘗試都將導致未定義的行為。

主要區別:

  1. 所有權: char[] 數組擁有自己的數據,而char* 指針引用另一個實體擁有的數據。
  2. 可變性: char[] 陣列可以修改(例如,分配新值),但 char * 指標指向不可變文字,更改它們指向的資料是未定義的。
  3. 記憶體分配: char[] 數組在堆疊上分配本地內存,而 char* 指標可以引用程式中任何位置的內存,包括文字和其他分配的記憶體。
  4. 大小決定: char[] 陣列的大小在編譯時是固定的,而char[] 陣列所指向的資料的大小char* 指標由資料本身或外部記憶體的分配決定。

以上是C 中「char*」和「char[]」有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn