被声明为数组的形式参数等同于指针,对传入的实际参数起不到限制作用,为了避免潜在的问题,当实际参数也是数组时,应要求实际参数与形式参数具有相同的元素个数。
示例:
int foo(int a[10]);
int bar(void) {
int a[5] = {0};
return foo(a); // Non-compliant
}
例中 foo 函数的形式参数被声明为具有 10 个元素的数组,而实际传入的数组只有 5 个参数,但这种代码可以通过编译。
在 C++ 代码中建议使用 std::array 等容器代替 C 数组,可参见 ID_forbidCArray 的进一步讨论。
相关: