关于字符串指针不可修改的问题
来源:互联网 发布:福汇外汇交易软件 编辑:程序博客网 时间:2024/05/20 01:08
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'的形式来修改数组内容.
阅读全文
0 0
- 关于字符串指针不可修改的问题
- 关于字符串指针不可修改的问题
- 关于字符串指针不可修改的问题
- 关于字符串指针不可修改的问题
- 关于字符串指针不可修改的问题
- 关于字符串指针不可修改的问题
- 由字符指针定义的字符串不可修改问题
- 关于字符串指针指向内容不能修改的问题
- 关于字符串指针的问题。
- 字符串指针修改问题
- 关于字符串指针的问题一
- 指针字符串修改问题、static
- python中关于字符串修改的问题
- 字符串常量不可修改,数组可修改的原因
- 关于字符串 字符数组 字符型指针的问题
- 关于字符串指针初始化std::string的一个小问题
- 关于c语言字符串中sizeof指针的问题
- 关于字符串能不能修改,重指向的问题解释
- flask之jinja2中使用字典、列表、方法等变量
- ThinkPHP查询数据的时候,自动把字段名的大写切换成小写的问题!
- 设置手机联系人样式的城市列表
- 103-使用广播的 UDP 回射客户端
- 一道很简单的题。toString()失误好几次
- 关于字符串指针不可修改的问题
- Sublime 快捷键
- hibernate-关系映射(多对一单向关联)-8
- C#学习笔记(八)—–LINQ查询创建策略
- 剑指offer 面试题36 数组中的逆数对
- ActiveMQ安装
- 【注意】微信公众号服务器配置启用停用都不能立马生效
- leetCode:Letter Combinations of a Phone Number
- eclipse 打不开Android sdk Manager界面