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

如何确定 C 中作为函数参数传递的数组的大小?

Patricia Arquette
Patricia Arquette原创
2024-11-09 10:36:02634浏览

How to Determine the Size of an Array Passed as a Function Argument in C  ?

C 函数参数中的数组大小确定

与主函数不同,确定作为参数传递给函数的数组的大小在 C 中使用 sizeof() 需要参考模板。这是因为数组在传递给函数时会衰减为指针。

数组衰减为指针

考虑以下代码片段:

int length_of_array(int some_list[]);

尽管带方括号的声明, some_list 在作为参数传递时衰减为整数指针 int* 。因此,sizeof(some_list) 返回的是指针的大小,而不是数组大小。

参考模板解决方案

要正确确定数组的大小,使用参考模板。例如:

template<size_t N>
int length_of_array(int (&amp;arr)[N]) {
  std::cout << N << std::endl; // Outputs the correct array size
  return N;
}

例外:多维数组

数组衰减规则有一个例外。多维数组保留其维度并且不作为指针传递。因此,可以直接使用 sizeof() 来确定它们的大小:

int a[3][4];
std::cout << sizeof(a) / sizeof(a[0]); // Output: 4 (number of columns)

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

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