永发信息网

为什么不能这么操作: char*p = “Hello World”; *p = “A”;

答案:4  悬赏:60  手机版
解决时间 2021-02-11 13:16
为什么不能这么操作: char*p = “Hello World”; *p = “A”;
最佳答案
p指向的常量字符串
*p是修改第一个字符位置的内容,也就是说尝试修改常量字符串,这个是不被允许的
-----------
char str[] ="Hello World";
str[0] = 'A'; 这样可以修改
全部回答
char是一个字符,而不是字符串。 “A”也是字符串,而不是字符,'A'才是字符 c++中你可以使用string实现
char*p = “Hello World”; 相当于定义一个字符串常量 都常量了就不能再赋值了
这个我知道. 因为我也为这个问题困扰过, 做过一些探讨. "hello world"作为静态字符串实际上存储在数据区,但写程序的人不知道这个地址,而程序本身知道。当某一函数以 { char p[] = "hello world"; ...} 方式使用此静态字符串时,实际上相当于: char p[12]; strcpy(p, "hello world"); .... p[12]是在栈里临时分配的。虽然p指向的内容是"hello world", 但是这是复制品,不是原件。当函数结束,char p[]就被程序回收了,所以p[]的内容就不再是"hello world"了。 但如果以char *p="hello world"的方式使用,p指向的是静态字符串存储的位置,也就是说指向"hello world"的原件,当然没有问题了。 如果想坚持用char p[]而不使用char *p, 有效方法必须是: { static char p[]="hello world"; return p; } 原因我想很清楚了。static char []是静态的,存储在数据区。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
气势汹汹的近义词
【写一个你崇拜的人】以《我崇拜的人》为题写
中国福利彩票(龙门街)地址在什么地方,想过去
明亮建材地址有知道的么?有点事想过去
你好,我也遇到华硕笔记本突然找不到独立显卡
天空城中雪飞霜诅咒易茯苓的成语是什么?
如果5ⅹ+3=31,那么12ⅹ-8等于多少
1999年转业的志愿兵安置在事业单位应该有编制
中国福利彩票(金山花园销售厅)怎么去啊,我要
物业公司的客服前台是否属于辅助性工作岗位
维生素D缺乏性手足搐搦症的患儿发生惊厥首先
贝斯特艺术学校·巴哈钢琴艺术中心地址在哪,
读《一味苦药》,完成问题。阅读答案
数控刀片编号为WNMG080408 每个字母数字是什
9月初的富士苹果看着很新鲜为什么吃起来有股
推荐资讯
巴容嘎顺地址有知道的么?有点事想过去
什么食用菌可以在地上或田地种?请给详细解答
全日空有多少架飞机啊
靖远靖北汽车运输有限责任公司我想知道这个在
求男主开始就很强,到出于某种原因隐藏实力的
广通速递(长安路174号附近广通速递)地址好找
淘宝交易撤销后钱会到哪里
怎样估测空气中二氧化碳含量一些久未开启的菜
百事达水族地址好找么,我有些事要过去
背石碑的大乌龟叫什么?
新疆库尔勒市 电信4G和联通4G哪个好?
朋友圈里如何用表情拼出i love you
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?