在将数组传递给另一个函数而不明确指定其大小时理解数组大小可能是 C 中的一个挑战。这个问题是由于需要在接收数组作为参数的函数内执行循环而产生的。
最初的方法,使用对 NULL 指针值的条件检查,由于可能存在意外值而被证明是不够的
C 中的一个有效解决方案涉及利用模板并通过参考:
template <typename T, int N> void func(T (&a)[N]) { for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements }
通过将数组大小 N 指定为模板参数,函数可以知道它正在使用的确切数组大小。这种方法确保循环迭代预期数量的元素。
要使用此模板函数,可以按如下方式传递数组:
int x[10]; func(x);
它是需要注意的是,这种方法仅适用于数组,不适用于指针。对于更通用的解决方案,使用标准库容器(例如 std::vector )可能是更好的选择。
以上是如何确定在 C 中作为函数参数传递的数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!