指向字符串的指针为何不能用来修改此字符串
生活随笔
收集整理的這篇文章主要介紹了
指向字符串的指针为何不能用来修改此字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 指向字符串的指針為何不能用來修改此字符串
- 為何char a[ ]可以修改字符串
指向字符串的指針為何不能用來修改此字符串
如上圖操作,指向字符串的指針不能用來修改此字符串,會出錯。這是因為: char *p="hello"; 等價于 const char *m="hello"; 對于指針p,無非就是一個地址的拷貝,也就是"hello"地址的拷貝。 "hello"保存在靜態的存儲區,該數據不能修改。 故不能通過指針p修改數據區的值為何char a[ ]可以修改字符串
為啥它可以修改呢?這是因為: "hello" 保存在棧空間數組里,數組名為a, 數組名為數組的首地址。 char a[]="hello"; 是從靜態存儲區(常量區)復制內容副本(即hello)到棧里給了 a[] 所以 所以a[] 本身有一個自己的 hello 副本,可以對其進行想要的合法操作,例如:改變字符串的內容。總結
以上是生活随笔為你收集整理的指向字符串的指针为何不能用来修改此字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 概率论 第四章 随机变量的数字特征
- 下一篇: C语言易错题集 第三部