2016 - 2024

感恩一路有你

指针的加减运算实质上是 C语言指针可以相减吗?为什么?

浏览量:2963 时间:2021-03-11 16:09:04 作者:admin

C语言指针可以相减吗?为什么?

如果两个指针向同一个数组,它们就可以相减,其为结果为两个指针之间的元素数目。仍以本章开头介绍的街道地址的比喻为例,假设我住在第五大街118号,我的邻居住在第五大街124号,每家之间的地址间距是2(在我这一侧用连续的偶数作为街道地址),那么我的邻居家就是我家往前第(124-118)/2(或3)家(我和我的邻居家之间相隔两家,即120号和122号)。指针之间的减法运算和上述方法是相同的。

指针是整数吗,若不是整数,指针为什么可以进行加减运算?

指针是16进制的地址,可以进行减法。p2指向的是buf[3]的地址;p1指向的是buf[1]的地址;因为是整型数据,所以一个整型是4个字节,p2-p1=(p2指向的地址-p1指向的地址)/sizeof(int)p1与p2地址之间差2个整型即8个字节大小;第二个等于是将地址转化为10进制然后在相减,故得数为8;inta[10]int*p1=&a[1]int*p2=&a[3]printf("%ldn",p2-p1)printf("%dn",(int)p2)printf("%dn",(int)p1)打印出转成int型的地址,(不转int,直接打印地址也可以看出来相差8个字节)

两个相同类型的指针变量可以做相加减运算吗?

应该选择C。A选项两个同类型的指针间可以比较大小,比较原则应该是按照实际内存的高低位比较的。B选项赋值,这个当然是可以的了。D选项两个相同指针变量相减可以获得在之间相隔的同类型元素个数。

指针的加减运算实质上是 C语言中指针有哪些运算 c语言指针加减整数

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。