指针疑惑

kkij 2003-10-20 10:18:27
*(p+1) 同 *p+1 是一样的吗?why
...全文
26 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharkhuang 2003-10-20
  • 打赏
  • 举报
回复
完全不一样哈
rocllllll 2003-10-20
  • 打赏
  • 举报
回复
肯定是你看错了,书上可没说*(p + i),也可以简化为* p+i表示
那是多维数组的表示,直说*(a+i)和*(p + i)等价
Hot_Forever 2003-10-20
  • 打赏
  • 举报
回复
书上错了,什么烂书啊
kkij 2003-10-20
  • 打赏
  • 举报
回复
但是刚看书上说:

对一维数组a来说,若把数组的首地址即数组名赋给指针
变量p,p就指向数组a,数组的各元素用p表示为, *(p + i),也可以简化为* p+i表示。

是不是书上错了?
bigflyingpig 2003-10-20
  • 打赏
  • 举报
回复
比如有数组int a[5]={0,2,4,6,8}
int *p = &a[0];
那么 *(p+1)的值是2, *p+1的值是1
*(p+1)是指针的运算p+1,然后取值
*p+1是数值的运算,先取值*p的值为0,再0+1得到1
Hot_Forever 2003-10-20
  • 打赏
  • 举报
回复
*(p+1)返回p指针所指元素的下一个元素,比如p指向a[5],*(p+1)就返回a[6]的值
*p+1,是把p所指元素的值+1,也就是说把a[5]的值加1
CODEING 2003-10-20
  • 打赏
  • 举报
回复
不一样。
hchinside 2003-10-20
  • 打赏
  • 举报
回复
破书。对于char型,他们一样。
Jupin 2003-10-20
  • 打赏
  • 举报
回复
*(p + i),也可以简化为* p+i表示。
========================================
书上错了,
*运算符优先级比+高,
所以*(p+i) 跟 *p+i 是不一样的
kkij 2003-10-20
  • 打赏
  • 举报
回复
谢了,20分均分了吧:)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧