您现在的位置:首页 > >

数组里a和&a的区别

发布时间:

#include

向a[1]处。


  对指针进行加1 操作,得到的是下一个元素的地址,而不是原有地址值直接加1。所以,一个类型为T的指针的移动,以sizeof(T)移动单位。因此,对上题来说,a 是一个一维数组,数组中有5 个元素;ptr? 是一个int? 型的指针。
  &a+1:取数组a的首地址,该地址的值加上sizeof(a)的值,即&a+5*sizeof(int),也就是下一个数组的首地址,显然当前指针已经越过了数组的界限。?
  (int *)(&a+1): 则是把上一步计算出来的地址,强制转换为int *?类型,赋值给ptr 。?
  *(a+1): a,&a 的值是一样的,但意思不一样,a 是数组首元素的首地址,也就是a[0]的首地址,&a 是数组的首地址,a+1 是数组下一元素的首地址,即a[1]的首地址,&a+1 是下一个数组的首地址。所以输出2。?
  *(ptr-1): 因为ptr? 是指向a[5],并且ptr是int * 类型,所以*(ptr-1)? 是指向a[4],输出5。



转载于:https://www.cnblogs.com/auleaf/archive/2011/09/19/2181346.html


热文推荐
猜你喜欢
友情链接: 团党工作范文 工作范文 表格模版 社科文档网 营销文档资料 工程文档大全