永发信息网

c,c++可以修改char *类型值吗

答案:5  悬赏:80  手机版
解决时间 2021-04-28 08:39
  • 提问者网友:暮烟疏雨之际
  • 2021-04-27 07:51
c,c++可以修改char *类型值吗
最佳答案
  • 五星知识达人网友:摆渡翁
  • 2021-04-27 08:11
不能修改!
char *p="hello";
相当于 const char *p="hello"
以这种方法初始化的字符串是常量字符串,而系统默认对常量赋初值后,其值无法被修改,否则会报错,所以不能修改。
全部回答
  • 1楼网友:等灯
  • 2021-04-27 12:06
在我机器run时报错了.
因为char *p="hello“;表示系统先将"hello"看成常量字符串,再将常量字符串的地址赋给p.
那么p是指向常量,是不可修改的.所以*(p+2)='w'不能起作用.
如果是下面的就行了:
char c[] = "hello";
char *p = c;
*(p+2)='w';
这样像能修改了!
  • 2楼网友:空山清雨
  • 2021-04-27 11:37
因为p指向了一个常量字符串,所以你对p操作相当于对常量字符串操作
改成这样就可以了:
char pp[] = "hello";
char *p = pp;//指向变量
*(p+2) = 'w';
这样输出的p就改变了
  • 3楼网友:一袍清酒付
  • 2021-04-27 11:03
原因:
char *p="hello“;
*(p+2)='w';
这里的p是一个指向常量字符串的指针
他可以相当与:const char *p="hello"
根据定义:指向常量字符串的指针不能更改指针指向的内容,但是可以改变本身的值,既是执行*(p+2)='w'; (错误) p="bcvcbvv"<正确>
char pp[] = "hello";
这个相当与指针常量,就是本身是个常量<因为pp就是数组的一个引用,引用本身就是指针常量>
相当与 char const *pp="hello";
根据定义:指针常量不能改变本声的值,但是可以改变指向的值
既是 *(pp+2)='W'(准确) pp="mnbmbmb"(错误)
  • 4楼网友:春色三分
  • 2021-04-27 09:49
不能修改!
关键问题是:
char *p="hello“;
以这种方法初始化的字符串是常量字符串,所以不能修改。
char p[]="hello“;
这是变量,可以修改!
char *p=new char[6];
p="hello“;
这也是变量,可以修改!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯