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

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


HUX布斯
浏览 653回答 4
4回答

交互式爱情

如果两个指针向同一个数组,它们就可以相减,其为结果为两个指针之间的元素数目。仍以本章开头介绍的街道地址的比喻为例,假设我住在第五大街118号,我的邻居住在第五大街124号,每家之间的地址间距是2(在我这一侧用连续的偶数作为街道地址),那么我的邻居家就是我家往前第(124-118)/2(或3)家(我和我的邻居家之间相隔两家,即120号和122号)。指针之间的减法运算和上述方法是相同的。C 语言指针怎么理解?你可以把它想象成一条无限长的纸带。纸带上边有一个个的小格子,每个小格子正好是一字节,里边能够存放一个数字。计算机的工作就是对这些小格子里的数字做处理。虽然你在电脑上能够看视频、听音乐,但这些东西本质上都是存在内存这条纸带上的数字。

饮歌长啸

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

胡子哥哥

可以啊本质上指针也是变量不过指针有大小一般用指针相减来求偏移或者空间大小对char的指针来说相差1内存相差1byte对int的指针来说差1内存地址相差4个byte
打开App,查看更多内容
随时随地看视频慕课网APP