在 C 语言中,指针的减法操作实际上是计算两个指针之间的元素个数,而不是直接的字节偏移量。指针减法的结果的单位是指针类型所指对象的大小。对于 char
类型的指针,这个大小是1字节。
所以,表达式 result - haystack
的结果是两个指针之间相差的元素个数,而由于它们都是 char
类型的指针,这个元素大小是1字节。因此,结果直接就是字节偏移量。
如果你在实际场景中使用了其他类型的指针,例如 int*
或 double*
,那么相同的指针减法将会以相应类型的大小为单位。例如,对于 int*
类型的指针,result - haystack
的结果将是两个指针之间相差的 int
元素个数,而不是字节偏移量。