指针p"加一"的表示含义

指针的p++,表示哪里加;
例:
#include <stdio.h>
int main()
{
int arr[10]={1,2,3};
int *p = arr;
p++;
*p = 10;
printf("%d,%d\n",arr[0],arr[1]);
return 0;
}
指针加1
1.加一个数组 错误
2.加一个字节 错误
3.加一个单元格 正确
第一种,加一个数组,很显然不成立,因为一个指针指向一个数组,即指向一个数组的第一个单元格。
如果指针加1,加一个数组的话直接越界,跳到下一个数组的第一个单元格,就不能实现对本数组的每一项操作,而且本题只有一个数组,很明显不符合逻辑。
第二种,加一个字节,如果加一个字节的话,如下图在这里插入图片描述
因为int类型占四个字节,一个字节占8位,如果指针p加1,只加一个字节的话,即放大四倍后的每一格占1个字节,所以转化为16进制后,每一格可以放两位数(16进制的一位数占4位),所以计算出加1后的值,00000a01转化为十进制是2561,0;而结果输出的是1,10,所以指针加1,不是加一个字节。
第三种,加一个单元格,因为上题是int类型,所以加4个字节,计算出来的结果就是1,10;所以指针加1,加的是一个单元格。
由此可以推出,
int *p; 是加4个字节
指针+ -数字,地址值需要调整,调整的权重为sizeof(指针去掉一个取值运算符)(这个星号打不出来,很尴尬!)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值