為什麼不能修改指向字串的指標

2021-06-20 21:31:20 字數 404 閱讀 8646

char *m = "hello";

"hello"儲存在靜態資料區,該資料不能修改.

由指標m指向. 不能通過指標m來修改靜態資料區的值.

char w = "hello";

"hello"儲存在棧空間陣列裡. 陣列名為w, 函式名為陣列的首位址.

可以通過w[i]='a', 或*(w+i)='a'的形式來修改陣列內容.

字串「hello」本身就是乙個常量字元指標,而對於指標m,無非就是乙個位址的拷貝,也就是「hello」位址的拷貝,相當於m指向乙個字串常量,字串常量是不予許改變的!

而對於w來說就不一樣了,雖然hello本身是常量,不過此時拷貝給w的不是位址,而是內容,也就是「hello」,也就是w本身擁有乙個自己的hello副本,可以對其進行想要的合法操作,比如改變等!!

指標到底能不能修改其指向的常量字串

1.指標到底能不能修改其指向的常量字串?今天做乙個字串右移函式時,直接使用指標來修改字串常量的值出現了奇怪執行時錯誤。如下 include stdio.h include string.h void loopmove char pstr,int steps pstr 0 temp int main ...

指標到底能不能修改其指向的常量字串

1.指標到底能不能修改其指向的常量字串?今天做乙個字串右移函式時,直接使用指標來修改字串常量的值出現了奇怪執行時錯誤。如下 include stdio.h include string.h void loopmove char pstr,int steps pstr 0 temp int main ...

C語言 字串指標(指向字串的指標)

字串一旦被建立就存在於常量池中。以字元陣列形式建立的字串,實際上是從字串常量池中複製了乙個副本,所以修改字元陣列的內容時,只是修改的自己的副本,並不會影響到常量池中的字串。而對字串指標strp操作時會影響到常量池中的字串 char strc string char strp string print...