A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飞哥 中级黑马   /  2015-7-29 21:36  /  676 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

23.char *ch1 = "heima";  将*(ch1 +1) = ‘6’;之后结果是多少?(A)
A.h6ima      B.运行不出错但有警告      C.运行正常但值没有改       D.运行出错

5 个回复

倒序浏览
ch本来指向字符串首地址,ch1+1,表示指针ch指向下一个地址,也就是指向字符串中'e'的地址,*(ch1+1)=6,表示把指向这个地址的值修改成6,
回复 使用道具 举报
ch1,sorry少打了个1,ch1
回复 使用道具 举报
首先楼上是正确的其次,这里的‘6’是字符型,Ascii码中是54这里以字符的形式输出  那输出就是6   如果以整形输出就是54.
回复 使用道具 举报
楼上的各位兄弟,能执行一下再说吗?执行结果是错误的,*ch1指向的是常量字符串的地址,是无法进行赋值的好么。ch1 +1确实指向了e所在的存储单元,但你这么写就相当于'e'='6',常量如何赋值?
回复 使用道具 举报
楼上说的没错,ch1指向的字符串是存在常量区的,ch1只是指向它而已,根本不能修改。
当然,如果是ASCII标准没有建立起来的那段时期是可以更改的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马