下标和指针?

C加伽 2014-05-10 11:15:26
《C++Primer》第四版
4.2.4 使用指针访问数组元素
3 下标和指针
其中一个重要的应用是使用下标访问数组时,实际上是使用下标访问指针?
----------------
问题:
1.这句话是什么意思?
2.书上实例:

int *p=&ia[2];

上面表达式,下标操作符[ ],它是怎么运算,返回值是什么?
整个表达式,运算过程,怎样?
...全文
190 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuohuangdedaxue 2014-05-10
  • 打赏
  • 举报
回复
数组下表是从0开始的。 举个例子: 如果定义数组int num[50]; 那么 *num==num[0]; *(num+1)==num[1]; 那么num==&num[0]; num+1=&num[1]; 如果定义一个int *p = num; 那么就可以用p去遍历数组了,比如说: p+1指向的就是num[1]的地址即p+1==&num[1];
arbboter 2014-05-10
  • 打赏
  • 举报
回复
引用 楼主 u014377200 的回复:
《C++Primer》第四版 4.2.4 使用指针访问数组元素 3 下标和指针 其中一个重要的应用是使用下标访问数组时,实际上是使用下标访问指针? ---------------- 问题: 1.这句话是什么意思? 2.书上实例:

int *p=&ia[2];
上面表达式,下标操作符[ ],它是怎么运算,返回值是什么? 整个表达式,运算过程,怎样?
&ia[2实际上是取ia[2]的地址,也就是用一个指针指向数组元素ia[2],也就是上面所说的“应用是使用下标访问数组时,实际上是使用下标访问指针” &ia[2]实际上是 (ia+2),相当于指针操作嘛
知行year 2014-05-10
  • 打赏
  • 举报
回复
a[2]表示数组第三个元素,&a[2]表示取所在对象的地址,int *p=&ia[2];将地址赋给int*指针
帅得不敢出门 2014-05-10
  • 打赏
  • 举报
回复
反汇编一下,慢慢研究。
Falleyes 2014-05-10
  • 打赏
  • 举报
回复
这句话的意思是说,你是用下标来访问,但实际上就是使用了指针,用下标只是一种直观的写法。 C指针中说,成熟的程序员使用指针,而不是下标,因为使用复杂的指针表示体现了一个程序员的逻辑能力,因为下标很直观。 其实访问数组,就是在数组地址上加偏移量,来访问特定的内存字节数据。 num[0]和*num等价,num[9]与*(num+9)等价

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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