加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 需要帮助更改char中的单个字符*

发布时间:2020-12-16 10:29:28 所属栏目:百科 来源:网络整理
导读:我正在回到c并掌握指针和诸如此类的东西,但是,我希望我能得到一些帮助来理解为什么这段代码会给出总线错误. char * str1 = "Hello World";*str1 = '5'; 错误:总线错误:( 更一般地说,我想知道如何更改cstring中单个字符的值.因为我的理解是* str =’5’应该
我正在回到c并掌握指针和诸如此类的东西,但是,我希望我能得到一些帮助来理解为什么这段代码会给出总线错误.

char * str1 = "Hello World";
*str1 = '5';

错误:总线错误:(

更一般地说,我想知道如何更改cstring中单个字符的值.因为我的理解是* str =’5’应该将str指向的值从’H’更改为’5′.因此,如果我打印出str,它会写着:“5ello World”.

为了理解我也编写了这段代码片段,它按预期工作;

char test2[] = "Hello World";
char *testpa2 = &test2[0];
*testpa2 = '5';

这给出了所需的输出.那么testpa2和str1之间的区别是什么?难道他们都没有指向一系列以null结尾的字符的开头?

解决方法

当你说char * str =“Hello World”时;你正在指向一个不可更改的文字字符串.应该要求将文字分配给const char *,但由于历史原因,情况并非如此(oops).

当你说char str [] =“Hello World;”你正在创建一个数组,该数组被初始化为(并由大小)编译时已知的字符串.这是可以修改的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读