指针的偏移

 

在下微信公众号:welldo。欢迎关注(虽然现在好像啥也没有)

 

基本数据类型指针偏移

//方便演示,先初始化一个指针为空。
int* a = nullptr;
a = a+1;//+1就偏移一个单位,而a定义的是指向int型数据的指针,int型有4个字节,所以输出就是00000004

//假设我们定义一个一维数组

int arr[5]={1,2,3,4,5};
  int* p= &arr[0];//这里也可以直接写成arr
  p = p+1;//相当于p = &arr[0+1]
  *p; //所以*p = 2;
  /*
  如果我们再定义一个指针
  因为前面的p已经指向了arr[1],为了达到更好的演示效果, 
  就让p1指向不同的地址
  */
int* p1=&arr[2];
  /*
  根据前面的我们很明显可以看出
  **p1也就是&arr[2]是可以看做&arr[1]+1的**
  而&arr[1]又是等于p的,故p1=p+1,所以结果显而易见
  */
  p1-p;

 

数组指针的偏移

project的介绍中说了,指针偏移一个单位,单位的大小由指向的数据大小决定。

所以我们数组指针的偏移就需要注意,要看指针指向的这个数组的大小。

//取整个数组的地址,也就是用这个数组的首地址初始化指针,

int* p2=&arr;//在数值上,&arr与&arr[0]一样,但意义不懂,所以不相等。

p2+1;//这此偏移的一个单位就要看arr的大小了,上文定义的大小为5,里面的数据类型都是int型,所以整个数组所占字节数为20

 

 

以上皆为个人对这几个方面的东西的拙见,如有错误,还请多多指教,以交流为主,自主再行求证,不要盲目相信,谢谢你们的观看。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值