区别在哪里?

Fi3_h 2013-07-13 09:26:43
int i[10];
int * p = & i[0];
int offest = 3;

p += offest; (a)
p += 3; (b)

表达式 (a) 和 (b) 有什么区别?
...全文
157 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmh360 2013-07-14
  • 打赏
  • 举报
回复
1、VC2005上结果是一样的 2、编译环境不同,可能有差别 3、a的可读性强
mujiok2003 2013-07-14
  • 打赏
  • 举报
回复
一样的行为。
艾薇儿More 2013-07-14
  • 打赏
  • 举报
回复
这个都是偏移地址量,区别没有
LubinLew 2013-07-13
  • 打赏
  • 举报
回复
没有任何区别啊, 整数默认是int型的
www_adintr_com 2013-07-13
  • 打赏
  • 举报
回复
如果编译器没有优化的话, (a) 比 (b) 要多访问一次内存.
benbenRH 2013-07-13
  • 打赏
  • 举报
回复
引用 楼主 Fi3_h 的回复:
int i[10]; int * p = & i[0]; int offest = 3; p += offest; (a) p += 3; (b) 表达式 (a) 和 (b) 有什么区别?
唯一看出来的区别就是: offset,看代码的人一看,就知道是偏移量,修改容易。因为后面的代码可能还会用到offset的内容
qzf362269994 2013-07-13
  • 打赏
  • 举报
回复
如果两个表达式不是一起的话,感觉没差别 如果是连在一起的话,(a)p指向i[3]的地址,(b)p指向i[6]的地址

70,026

社区成员

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

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