指针的加法操作

指针的加法操作我们见过很多,但是减法操作遇到的好像很少。
有这么一个笔试题:
int a[] = {1, 2, 3};int *p1 = &a[0];int *p2 = &a[2];printf(%ld, p2 - p1);  一个数组,两个指针,指针p1指向数组第一个元素,指针p2指向数组第三个元素,问p2-p1的结果是多少?
我觉得答案应该分两种,8或者2。
结果8是因为一个整数占了4个字节,两个整数当然是8个字节。
结果2是因为他们相差了两个元素。
下面还是敲代码试一下,直接用printf输出结果,选择%ld作为输出格式。root@turbo:test# ./test 2root@turbo:test#  结果是2。
所以相同类型指针做减法操作的时候,结果还是元素的个数。
就好像p1+2加的是8个字节而不是2个字节一样。
最后,给大家留个问题,如果希望printf输出的结果是8,那代码应该怎么修改?
答案:
对指针进行强制类型转换,可以转换成整型或者字符型指针。printf(%lu, (int)p2 - (int)p1);printf(%lu, (char *)p2 - (char *)p1);   


警用无人机应用场景和特点
TM52F1363为面包机提供MCU解决方案,内置LCD驱动器和A/D转换器
创新的板对板产品BergStak 连接器
共集放大电路(射极跟随器)的基础知识
第三代半导体头部企业基本半导体完成C4轮融资,全力加速产业化进程
指针的加法操作
工业AI质检走向爆发期,机器颠覆机器的战役正在打响
天下没有免费的午餐,申请SSL证书选择CA很关键!
速度达到10MBps的人体网络通信技术
国内最强三款旗舰手机: 一加5、小米6、努比亚Z17对比评测,哪款更适合你呢?
海兴电力与Arm合作将为客户打造出全栈式的物联网解决方案
降压DC-DC 宝砾微PL88104 封装SOT23-6L
51单片机优缺点及应用领域介绍
中国移动一直致力于引入 SDN 技术,进一步开放网络能力
什么是IA/EC/Decode
联想超惠普成PC龙头?Gartner和IDC数据打架
教育上云论云桌面对教育行业格局的影响
电子自动数粒仪的操作方法是怎样的
从技术角度看待移动和广电合作
2022年二季度全球GPU出货量仅为8400万 NVIDIA大幅锐减25.7%