指针加减偏移量时计入 sizeof 是可疑的
10.7.5 ID_sizeof_suspiciousAdd
指针加减偏移量时会自动计入指针指向类型的大小,如果再计入 sizeof 的值,很可能是某种错误。
示例:
int foo(int* p, int i) {
return *(p + i * sizeof(int)); // Rather suspicious
}
如果 foo 函数是为了获取指针 p 之后第 i 个整数的值,那么这种实现是错误的,应改为:
int foo(int* p, int i) {
return *(p + i); // Right
}
依据
ISO/IEC 9899:1999 6.5.6(8)
ISO/IEC 9899:2011 6.5.6(8)