C++指针用法:(*p+n)和(*(p+n))有什么区别?
答案:3 悬赏:50 手机版
解决时间 2021-04-02 02:34
- 提问者网友:浪荡绅士
- 2021-04-01 05:34
C++指针用法:(*p+n)和(*(p+n))有什么区别?
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-04-01 06:01
foo函数中先开设了6个结构分别是可以由*p,*p+1,*p+2,*p+3,*p+4,*p+5来访问,请注意p的定义是**。
循环中用(*p+n)相当于(*p)[n],可以依次访问6个结构,给它们赋值。
由于*p指向的是结构数组,而*(p+n)除了n=0的情况外就不知道指向哪里了。
循环中用(*p+n)相当于(*p)[n],可以依次访问6个结构,给它们赋值。
由于*p指向的是结构数组,而*(p+n)除了n=0的情况外就不知道指向哪里了。
全部回答
- 1楼网友:七十二街
- 2021-04-01 07:05
这里面涉及到的三个运算符,优先级为() > * > +
(*p+n)
先计算*p再和n求和,即指针p指向的内容和n求和,这里面*p指向的是T[6]这个数组的首地址,即第0个元素的地址
*(p+n)
先计算p+n,再取这个指针指向的内容
(*p+n)
先计算*p再和n求和,即指针p指向的内容和n求和,这里面*p指向的是T[6]这个数组的首地址,即第0个元素的地址
*(p+n)
先计算p+n,再取这个指针指向的内容
- 2楼网友:迷人又混蛋
- 2021-04-01 06:21
(*p+n)就是*p所指的变量加上n
而(*(p+n))则是指当前元素后面第n个元素的值:4
如有一个a[9]数组,*p=&a[2],则(*(p+3))就是a[5]了
而(*p+n)就是a[2]+n的意思
不过*p++不能这么看,*p++会看成*(p++)
因为++和*运算等级一样,且同是右结合运算符,所以从右开始运算
而(*(p+n))则是指当前元素后面第n个元素的值:4
如有一个a[9]数组,*p=&a[2],则(*(p+3))就是a[5]了
而(*p+n)就是a[2]+n的意思
不过*p++不能这么看,*p++会看成*(p++)
因为++和*运算等级一样,且同是右结合运算符,所以从右开始运算
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯