首页 > 后端开发 > C++ > 如何可靠地确定传递给 C 函数的数组的大小?

如何可靠地确定传递给 C 函数的数组的大小?

Susan Sarandon
发布: 2024-12-30 02:53:28
原创
799 人浏览过

How Can I Reliably Determine the Size of an Array Passed to a C   Function?

确定传递函数中的数组大小

问题出现在 C 中,其中确定传递给函数的数组的大小会导致由于 sizeof 无法准确捕获数组的长度,这是一个挑战。

一种流行的解决方案建议当数组元素 array[i] 达到 NULL 时终止循环。但是,这种方法可能会导致错误,因为 array[i] 有时在数组末尾附近包含随机垃圾值。

带有数组引用的基于模板的解决方案

C 通过模板和数组引用提供了更可靠的解决方案:

template <typename T, int N>
void func(T (&a)[N]) {
    for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements
}
登录后复制

这个基于模板的函数采用 T 类型的数组 a 和N 的固定大小。通过使用引用运算符 &,它将原始数组绑定到 a,允许在不显式传递大小的情况下访问数组的元素。

要使用此函数,只需声明一个数组并传递通过引用:

int x[10];
func(x);
登录后复制

需要注意的是,此解决方案仅适用于数组,而不是指针。对于基于指针的数组,更好的选择是使用标准模板库 (STL) 容器 std::vector,它提供大小和元素访问功能。

以上是如何可靠地确定传递给 C 函数的数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板