黑马程序员技术交流社区

标题: 请问选什么?为什么? [打印本页]

作者: 飞哥    时间: 2015-7-29 21:36
标题: 请问选什么?为什么?
23.char *ch1 = "heima";  将*(ch1 +1) = ‘6’;之后结果是多少?(A)
A.h6ima      B.运行不出错但有警告      C.运行正常但值没有改       D.运行出错
作者: wy911011    时间: 2015-7-29 21:43
ch本来指向字符串首地址,ch1+1,表示指针ch指向下一个地址,也就是指向字符串中'e'的地址,*(ch1+1)=6,表示把指向这个地址的值修改成6,
作者: wy911011    时间: 2015-7-29 21:45
ch1,sorry少打了个1,ch1
作者: Anne_lov    时间: 2015-7-30 17:04
首先楼上是正确的其次,这里的‘6’是字符型,Ascii码中是54这里以字符的形式输出  那输出就是6   如果以整形输出就是54.
作者: Eil.tea    时间: 2015-7-30 17:21
楼上的各位兄弟,能执行一下再说吗?执行结果是错误的,*ch1指向的是常量字符串的地址,是无法进行赋值的好么。ch1 +1确实指向了e所在的存储单元,但你这么写就相当于'e'='6',常量如何赋值?
作者: 白方镜世    时间: 2015-7-30 18:09
楼上说的没错,ch1指向的字符串是存在常量区的,ch1只是指向它而已,根本不能修改。
当然,如果是ASCII标准没有建立起来的那段时期是可以更改的。




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