指针与整数的加减运算应使用数组下标的方式
14.24 ID_missingArrayIndexing
指针与整数的加减运算可以通过多种方式完成,为了提高可读性应统一使用数组下标的方式,不宜使用 +、-、+=、-= 等运算符,且应尽量减少指针运算。
指针的 ++、-- 运算和两个指针的减法运算可不受本规则限制。
示例:
int a[10];
int* p;
p = a + 1; // Non-compliant
p = &a[1]; // Compliant
*(p + 1) = 0; // Non-compliant
p[1] = 0; // Compliant
p = p + 1; // Non-compliant
p++; // Compliant
p = &p[1]; // Compliant
参考
CWE-468
MISRA C 2004 17.4
MISRA C 2012 18.4
MISRA C++ 2008 5-0-15
SEI CERT EXP08-C