指针算术运算




指针算术运算

int main()
{
 int arr[10]={1,2,3,4,5,6,7,8,9,10};
 int *p=arr;
 *p=10;
 p++;//??
 *p=20;
 printf("%d,%d\n",arr[0],arr[1]);
 return 0;
}

p++如何设计?
①加1个字节    ②加1个单元格   ③加整个数组

4字节=32位,  二进制对应2位,即4字节存放16个二进制数字
            十六进制对应4位,即4字节存放8位十六进制数字
  十进制的10转换成十六进制的a,即0x0000000a
小端:低地址放小数据  eg:PC
大端:低地址放大数据  eg:手机 ARM 网络
 十进制的20转换成十六进制的14,即0x00000014


③不合理(存在除法问题)
② int *p; 
   p+1; //求4(sizeof(int)*1)字节
   double *p1;
   p1+1; //求(sizeof(double)*1)字节

即②加1个单元格合理



总结:指针加法需要调整,调整的权重是指针本身去掉一个*,再求sizeof();

int *p; p+1; //4(sizeof(int)*1)字节

double *p; p+1; //(sizeof(double)*1)字节



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值