1. 程式人生 > 其它 >C 字串指標與字串陣列

C 字串指標與字串陣列

在程式中定義的字串無論是對於字串指標還是字串陣列,都會將字串放到靜態儲存區

在程式開始執行的時候,對於陣列來說,先分配記憶體空間,然後靜態儲存區中的字串字面量將拷貝到字串陣列中,而對於字串指標來說,這個指標將直接指向靜態儲存區中的字串常量地址,而且對於同一個字串字面量,編譯器只會在靜態儲存中儲存一次。下面我們列印一下字串字面量的地址。


對於雙引號引起來的字串字面量就是一個地址,可以看到str指向的地址和"hello world"的地址是相同的,都是在靜態儲存區中的一個形同的地址,而對於陣列來說,由於是重新在記憶體上開闢了一個地方,所以也就是說字串的陣列是與其他兩個不同的。

字串字面量是一個常量,也就是說他是const修飾的,也就是說任何指向字串字面量的指標都無法通過解引用來改變字串字面量的值,他修改的結果將會是未定義的,換句話說就是不能進行*str='q'這種操作,但是陣列的元素是變數,可以改變(array[2]='q' ✅)。

同時array是一個地址常量,他是一個不能修改的,不能當作左值。但是str是一個指標變數,它可以當作左值,可以進行自增或者自減操作。