为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
HUX布斯 2019-04-04 02:02:59
C语言指针可以相减吗?为什么?
查看完整描述

4 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

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

C 语言指针怎么理解?

你可以把它想象成一条无限长的纸带。纸带上边有一个个的小格子,每个小格子正好是一字节,里边能够存放一个数字。计算机的工作就是对这些小格子里的数字做处理。虽然你在电脑上能够看视频、听音乐,但这些东西本质上都是存在内存这条纸带上的数字。


查看完整回答
反对 回复 2019-04-05
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

同类型的指针可以相减,其结果是两个指针所指向地址间相差的这个类型元素的个数,如果是高地址的减低地址就是正数,否则就是负数
比如int a[100], *p, *q;
p = &a[10];
q = &a[22];
那么q - p = 12,就是两者之间差了12个元素,q在后(高地址)
p - q = -12,p在前

 10   2

 


查看完整回答
反对 回复 2019-04-05
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

可以啊本质上指针也是变量不过指针有大小
一般用指针相减来求偏移或者空间大小
对char的指针来说相差1内存相差1byte
对int的指针来说差1内存地址相差4个byte

查看完整回答
反对 回复 2019-04-05
  • 4 回答
  • 0 关注
  • 652 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信