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 (&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中文网其他相关文章!