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

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

DDD
DDD原创
2024-11-08 14:38:02840浏览

How Do You Determine the Size of an Array Passed to a C   Function?

传递给 C 语言函数时确定数组大小

与 main 函数不同,sizeof() 直接返回数组的大小,将数组传递给函数需要考虑由于数组衰减到指针。

数组衰减为指针

当作为参数传递时,数组衰减为指向其第一个元素的指针。这意味着函数中的表达式 sizeof(some_list) 将给出指针的大小,而不是整个数组的大小。

Sizeof 比率问题

使用计算数组大小的表达式 (sizeof(some_list)/sizeof(*some_list)) 不起作用因为:

  • sizeof(some_list) 返回指针的大小,通常为 4 个字节(对于 32 位系统)。
  • sizeof(*some_list) 返回指针的大小单个数组元素,整数通常为 4 个字节。

无论大小如何,此比率始终结果为 1数组大小。因此,函数 length_of_array 始终返回 1。

使用模板的替代方法

要在传递给函数时准确确定数组的大小,请使用模板:

template<size_t N>
int length_of_array(int (&amp;arr)[N])
{
    return N;
}

这种方法使用模板参数 N 来指定数组的大小,然后由功能。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn