C指针的减法为什么不用除以类型大小

发布时间 2024-01-02 16:37:33作者: 丨m&m丨

在 C 语言中,指针的减法操作实际上是计算两个指针之间的元素个数,而不是直接的字节偏移量。指针减法的结果的单位是指针类型所指对象的大小。对于 char 类型的指针,这个大小是1字节。

所以,表达式 result - haystack 的结果是两个指针之间相差的元素个数,而由于它们都是 char 类型的指针,这个元素大小是1字节。因此,结果直接就是字节偏移量。

如果你在实际场景中使用了其他类型的指针,例如 int*double*,那么相同的指针减法将会以相应类型的大小为单位。例如,对于 int* 类型的指针,result - haystack 的结果将是两个指针之间相差的 int 元素个数,而不是字节偏移量。