黑马程序员技术交流社区

标题: 问答. [打印本页]

作者: 飞哥    时间: 2015-7-29 21:42
标题: 问答.
23.char *ch1 = "heima";  将*(ch1 +1) = ‘6’;之后结果是多少?( )
A.h6ima      B.运行不出错但有警告      C.运行正常但值没有改       D.运行出错
选啥?为啥?
作者: 飞哥    时间: 2015-7-29 21:55
求大神指教
作者: 默凉雨    时间: 2015-7-29 23:15
选择A   指针数组,*(ch1+1)='6'是插入数组第二位的意思。(不知道是不是??)
作者: Eil.tea    时间: 2015-7-29 23:26
选D,*ch1 指向的是一个常量区, *ch1+1依然是常量区,怎么可以赋值呢
作者: liusuizuoyou    时间: 2015-7-29 23:56
选 B     原值美发生改变
作者:   张恒宇    时间: 2015-7-30 00:42
本帖最后由   张恒宇 于 2015-7-30 01:17 编辑

为什么编译结果值是空的 。。。。。

79615B25-FC5B-4826-BE80-9B65CEABC2D1.png (73.75 KB, 下载次数: 13)

79615B25-FC5B-4826-BE80-9B65CEABC2D1.png

作者: wowthe1st    时间: 2015-7-30 01:05
别想太多,就是选A,单纯的修改了字符数组第二个值为6
作者:   张恒宇    时间: 2015-7-30 01:07
wowthe1st 发表于 2015-7-30 01:05
别想太多,就是选A,单纯的修改了字符数组第二个值为6

运行结果我看看

作者: 香港    时间: 2015-7-30 08:22
d    char是单个字符 用单引号 也只表示单个字符 双引号的里面有多个字符的用string
作者: 爱生活爱程序    时间: 2015-7-30 09:24
d字符串指针变量指向的常量,不能修改
作者: 丁铭检    时间: 2015-7-30 12:14
*(ch1+1)表示已经跳出了,字符指针的范围。。所以会有一个错误。。。应该是D,如果改成*(&ch+1)那就选择A
作者: 默凉雨    时间: 2015-7-31 17:38
之前说错了,现在纠正一下。使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以不可以修改字符串中的字符。所以选择D




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2