指针的算数运算

指针的算术运算:

1.指针+数字(有意义):需要调整,调整的权重(格子的大小)为sizeof(指针去掉一个*)

  指针+1(向后移动):不是加一个字节或者加整个数组,而是加一个单元格

2.指针-数字(有意义):需要调整,调整的权重(格子的大小)为sizeof(指针去掉一个*)

   指针-1(向前移动):减一个单元格

eg:

int *p=(int *)0x2010;//0x2010为十六进制

printf("%x\n",p-2);//2016-(2*sizeof(int))=2016-2*4=2008

printf("%x\n",(short *)p-2);//2016-(2*sizeof(short))=2016-2*2=200c

printf("%x\n",(unsigned long *)p-2);//2016-(2*sizeof(unsigned long))=2016-2*4=2008

printf("%x\n",(long long **)p-2);//去掉一个*后,变为一级指针,而一级指针占4个字节,即为2016-2*4=2008

printf("%x\n",(float *)p-2);//2016-(2*sizeof(float))=2016-2*4=2008

printf("%x\n",(double *)p-2);//2016-(2*sizeof(double))=2016-2*8=2000

printf("%x\n",(char *)p-2);//2016-(2*sizeof(char))=2016-2*1=200e

printf("%x\n",(unsigned long )p-2);//是数字,不是指针,直接减去,即为2016-2=200e

3.指针+指针(非法无意义)

4.指针-指针(有意义) : 表示间隔的单元个数(不是字节数)

   方法:(1)算出字节数 (2)除以调整的权重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值