C/C++ code

char*m ="hello"; *(m+1) ='s'; for(;*m !='\0';m++){ printf("%c\n",*m); }

但是出运行时错误。
----------------------------------------------------------
我用数组下标的方式是可以修改的:

C/C++ code
int i =0; char w[] ="hello"; w[1] ='s'; while(w[i] !='\0'){ printf("%c\n",w[i]); i++; }
答复一:
char *m = "hello";
"hello"保存在静态数据区,该数据不能修改.
由指针m指向. 不能通过指针m来修改静态数据区的值.

char w[] = "hello";
"hello"保存在栈空间数组里. 数组名为w, 函数名为数组的首地址.
可以通过w[i]='a', 或*(w+i)='a'的形式来修改数组内容.

疑问:
这种说法是错误的。如下:
 static int a = 10;
 int *b = &a;
 *b = 20;
 cout<<a<<endl;
输出结果为20.我们依然通过指针修改了存储在静态存储区里的数据源。
//---------------------------------------------------
答复二:
字符串“hello”本身就是一个常量字符指针,而对于指针m,无非就是一个地址的拷贝,也就是“hello”地址的拷贝,相当于m指向一个字符串常量,字符串常量是不予许改变的!

而对于w[]来说就不一样了,虽然hello本身是常量,不过此时拷贝给w[]的不是地址,而是内容,也就是“hello”,也就是w本身拥有一个自己的hello副本,可以对其进行想要的合法操作,比如改变等!!

回复三:
char *m = "hello";
"hello"保存在文字常量区,该数据不能修改,默认有只读属性.
由指针m指向. 不能通过指针m来修改此值.

char w[] = "hello";
"hello"保存在栈空间数组里. 数组名为w, 函数名为数组的首地址.
可以通过w[i]='a', 或*(w+i)='a'的形式来修改数组内容.

转载于:https://www.cnblogs.com/CBDoctor/archive/2012/09/27/2705776.html

关于字符串指针不可修改的问题相关推荐

  1. C语言中字符数组和字符串指针分析

    写下面的测试程序: #include <stdio.h> int main(int argc, char *argv[]) { char day[15] = "abcdefghi ...

  2. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  3. C++ 字符串指针与字符串数组

    在做面试100题中第21题时,发现char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有点区别,以前 ...

  4. C++ 字符串指针和字符串指针数组详解

    C++处理字符串有两种方式,即:指针方式和数组方式 数组方式:char a[] = "HelloWorld"; 指针方式:const char* s = "HelloWo ...

  5. 字符串指针的地址的传递

    字符串指针的地址的传递 #include <iostream>using namespace std;void change(char **a) {(*a)++; }int main() ...

  6. 厦大2021届大一小学期C语言作业1 数组+字符串+指针+位操作

    文章目录 一.数组与指针 1.手搓冒泡排序(从大到小) 2.矩阵的转置和打印 3.判断矩阵是否对称 4.最大元素与最后元素互换(用指针) 5.首地址偏移法逆序排序 6.指针移动法逆序排序 7.用元素指 ...

  7. 字符串指针——指向字符串的指针

    转载自:字符串指针 字符串指针--指向字符串的指针 C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在<C语言字符数组和字符串>中已经进行了详细讲解,这里不妨再来演示 ...

  8. c语言---字符串为什么不能修改内容???字符串常量存放在常量区吗???

    疑惑: 1. const修饰的变量都存放在常量区吗??? 2. 字符串常量存放在那???为什么字符型指针(char*)指向字符串不能修改其内容??? 字符串的演变: char* p="123 ...

  9. C语言补漏:字符串指针与字符数组传参

    字符串指针与字符数组传参 深信服的笔试上被吊打,其中对一道用指针做形参的题目印象十分深刻,借此恶补了一晚上指针,今天总结,以作警示. ​ 试想有如下情形,将一个字符串指针做形参赋值函数修改其字符串,函 ...

最新文章

  1. mysql的B+树如何存储主键和数据,磁盘io和innodb页大小的一些问题
  2. 抖音数据统计_“彭十六elf”单条视频获赞200W+,荣登抖音TOP20丨红人榜
  3. 如何在 C# 中使用 AutoMapper
  4. Depth-first Search深度优先搜索专题7
  5. java模块_Java 9 揭秘(2. 模块化系统)
  6. MyBatis复习(五):获取多表关联查询结果
  7. php中find的函数_filter()、find()函数的区别
  8. docker镜像和容器的导出导入
  9. 【python】装饰器小结(被装饰函数有/无返回值情况,保留被装饰函数信息)
  10. iframe src 不加载页面_iframe和frame的区别是什么?iframe和frame的区别总结
  11. 图书馆占座系统(四)
  12. 【转载】制作一个超精简的WIN7.gho
  13. Liferay门户应用前景分析
  14. 路径详解(绝对路径,相对路径,根相对路径)
  15. 一个华为人在华为工作十年的感悟 --徐家骏
  16. 如何设计一个C++的类?
  17. XUPT_ACM2021寒假训练第二周练习记录
  18. 计算机没有打字键盘显示不出来,键盘打不出字怎么回事
  19. Yarn框架和工作流程简介
  20. 【免费领取】趣味测试小程序源码/内置超多趣味测评+可插入流量主广告位微信小程序源码

热门文章

  1. 【科普】STP生成树协议
  2. 硬核!OSPF路由协议归纳大全~
  3. 【干货】救火必备:线上故障排查套路大全
  4. php 单例模式的日志类,php单例模式实现日志处理类库
  5. 罗美琪和春波特的故事...
  6. 快速搭建 Serverless 在线图片处理应用
  7. Knative 实战:如何在 Knative 中配置自定义域名及路由规则
  8. 冒险者传说pc6java_冒险者传说
  9. 数据丢包怎么修复_交换机发生网络通信故障怎么解决?
  10. 给oracle用户赋权限导入导出,Oracle常用命令-用户、表空间、赋权限、导入导出...