为了账号安全,请及时绑定邮箱和手机立即绑定

c++基本概念(数组和指针)

c++基本概念(数组和指针)

C++
听雨0 2015-11-28 09:10:54
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个赞

  1. str[1] 取到的是str[]的第二个元素,即"basic"。再加1时,str[1]会视为指向"basic"字符数组首元素的指针,指针+1 就是指向第二个元素,即a字符。那么cout就会从a字符开始将“asic”这个字符串打印出来。

  2. 指针中存的是其指向对象的地址,指针本身是一个变量。 这句话似乎没什么错...

  3. p是指向a的指针,++的优先级比*高,所以先算p++:p++这个表达式的值还是p,那么*p就是a(只不过之后p就指向了a后面的地址)


查看完整回答
反对 回复 2015-11-28
  • 听雨0
    听雨0
    我搞不太懂第一题中 两种方式的区别,为什么一个是输出字符串,一个是输出一个字符,‭cout<<str[1]+1 与 cout<<str[1][1] 有什么不一样吗?
?
onemoo

TA贡献883条经验 获得超454个赞

str[1]+1 得到的是个指向char的指针,cout会按照字符串来对待这个指针,也就是试图从这个字符开始将后面的字符作为一个字符串来输出。  至于为什么得到的是指针,我前一回答的第一段中解释了。

str[1][1] 得到的就是一个char字符,cout当然只会输出这个字符了。

查看完整回答
反对 回复 2015-12-01
  • 听雨0
    听雨0
    解释的很清楚,对我这个新手帮助很大!谢啦
  • 2 回答
  • 2 关注
  • 1329 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信