char str[2][10]={"c++","basic"}; cout<<str[1]+1 //输出asic cout<<str[1][1]//输出a这两种数组表达方式有什么不同,为什么第一个能够输出 “asic”这个字符串?2."指针是一个变量的地址值,是一个变量。 “ 这句话哪里错了3.设int a=10,*p=&a;表达式int j=*p++正确且执行后p任指向变量a。 为什么?
2 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
str[1] 取到的是str[]的第二个元素,即"basic"。再加1时,str[1]会视为指向"basic"字符数组首元素的指针,指针+1 就是指向第二个元素,即a字符。那么cout就会从a字符开始将“asic”这个字符串打印出来。
指针中存的是其指向对象的地址,指针本身是一个变量。 这句话似乎没什么错...
p是指向a的指针,++的优先级比*高,所以先算p++:p++这个表达式的值还是p,那么*p就是a(只不过之后p就指向了a后面的地址)
onemoo
TA贡献883条经验 获得超454个赞
str[1]+1 得到的是个指向char的指针,cout会按照字符串来对待这个指针,也就是试图从这个字符开始将后面的字符作为一个字符串来输出。 至于为什么得到的是指针,我前一回答的第一段中解释了。
str[1][1] 得到的就是一个char字符,cout当然只会输出这个字符了。
- 2 回答
- 2 关注
- 1329 浏览
添加回答
举报
0/150
提交
取消