c语言指针可以相减吗?为什么?
如果两个指针指向同一个数组,可以将它们相减,结果是两个指针之间的元素数。让我们以本章开头介绍的街道地址的类比为例。假设我住在第五大道118号,我的邻居住在第五大道124号。每间房子的地址间距是2(我这边的街道地址是连续的偶数)。那么我邻居的房子就是我房子前面的(124-118)/2(或3)房子(我邻居的房子和我的房子分开两个房子,即120和122)。指针之间的减法与上述方法相同。
指针是整数吗,若不是整数,指针为什么可以进行加减运算?
指针是可以减去的十六进制地址。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语言中指针有哪些运算 C语言指针可以相减吗?为什么?,如若转载,请注明出处:https://www.saibowen.com/news/21838.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。