以上的宣告中,ptr1和ar都是該字串的位址,但這兩種形式並不完全相同。const
char * ptr1 = "fine.";
const
char ar = "fine.";
初始化陣列:
字串儲存在靜態儲存區。但是,程式在開始執行時才會為該陣列分配內
存(以上面的宣告為例,陣列形式ar[ ]在計算機的記憶體中分配為乙個內含6
個元素的陣列(每乙個元素對應乙個字元,還加上乙個末尾的空字元『\0』))。此時,
才將字串拷貝到陣列中。
注意:此時字串有兩個副本。乙個是在靜態記憶體中的字母串字面量,乙個是儲存在ar1陣列中的字串。
初始化指標:
指標形式也使得編譯器為字串在靜態記憶體區預留6個元素的空間。
程式開始執行時,它會為指標變數pt1留出乙個儲存位置,並把字串的位址儲存在指標變
量中。總之,初始化陣列把靜態儲存區的字串拷貝到陣列中;而初始化指標只把字串的位址拷貝給指標。
字串 用陣列初始化和用指標初始化方法
1 字串陣列初始化 1 用足夠的空間的陣列儲存字母串 const char example 40 so big it is.const表示不會更改這個字母串 還有這種 const char example 40 注意最後的空字元 0 沒有這個空字元,這就不是乙個字串,而是乙個字元陣列。2 讓編譯器確...
用陣列和指標初始化字串的區別
在c語言中 string 儲存的就是首個字元所在的位址 所以可以把 字串常量 string 賦值給指標 char p p string 但不能把字串常量 直接賦給陣列,需要用到 strcpy。但可以對陣列初始化為 字串,也就是字元陣列 如 char str string 兩種初始化的區別 char ...
字串初始化指標和初始化陣列區別
定義指標時,編譯器並不為指標所指向的物件分配空間,它只是分配指標本身的空間,除非在定義時同時賦給指標乙個字串常量進行初始化。在ansi c中,初始化指標時所建立的字串常量被定義為唯讀。如果試圖通過指標修改字串的值,程式就會出現未定義的行為。在有些編譯器中,字串常量被存放在只允許讀取的文字段中,以防止...