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

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

Susan Sarandon
Susan Sarandon原创
2024-12-12 10:38:18706浏览

How Can I Determine the Size of a C   Array Passed as a Pointer to a Function?

从 C 中的指针确定数组的大小

在 C 中使用数组时,可能有必要确定它们的大小。但是,当将数组作为函数参数传递时,它会衰减为指针,不会留下明确的大小信息。

不正确的方法

  • sizeof list/sizeof(int) : 此方法尝试使用 sizeof 运算符确定数组的大小,但它除以 int 的大小而不是数组的实际大小size.
  • list.size():该方法不能使用,因为它不是int数组类型的成员函数。

确定大小正确

从指针确定数组大小的正确方法是将大小作为附加值传递

int largest(int *list, int highest_index)
{
  // ...
}

要使用此函数,请将数组及其大小作为参数传递:

int array[] = {1, 2, 3, 4, 5};
int size = sizeof(array) / sizeof(int); // Calculate array size
int max = largest(array, size);

数组/指针等价

C 继承数组/指针等价来自 C,它允许数组在传递给函数时衰减为指针。这种行为意味着指针不包含大小信息。

内存布局

理解数组的内存布局至关重要。声明数组时,会分配连续的内存来存储其元素。指向第一个元素的指针暗示了数组的开始,但它不携带有关其大小的信息。

结论

要从 C 中的指针准确确定数组的大小,有必要将大小作为附加参数传递给处理数组的函数。这种方法确保该函数可以访问所需的信息。

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

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