首页 >后端开发 >C++ >在 C 中使用指针时如何获取数组的大小?

在 C 中使用指针时如何获取数组的大小?

Susan Sarandon
Susan Sarandon原创
2024-12-03 05:41:10229浏览

How Can I Get the Size of an Array When Using Pointers in C  ?

在 C 中使用指针获取数组的大小

在数组上操作时,确定数组中元素的数量至关重要。然而,当在 C 中将数组用作指针时,此任务变得具有挑战性。

C 从 C 继承了“数组/指针等效性”。当作为函数参数传递时,数组可以衰减为指针,允许使用如下代码:

void func(int* ptr);

int array[5];
int* ptr = array; // equivalent to 'ptr = &array[0]'
func(array); // equivalent to 'func(&array[0]);'

在您的情况下,您传递的是指向数组元素的指针而不是数组本身。因此,指针本身并不包含大小信息。

要处理此问题,您应该显式地将大小作为附加参数传递:

static const size_t ArraySize = 5;
int array[ArraySize];
largest(array, ArraySize);

自定义函数以接受数组指针直接及其大小:

int largest(int* array, size_t size);

您还可以利用语法糖以固定的值定义数组size:

void func(int array[5]);

但是,这是数组指针声明的语法糖:

void func(int* array);

当你拥有数组本身而不仅仅是指针时,你可以获得数组的数量元素使用:

sizeof(array) / sizeof(array[0]);

以上是在 C 中使用指针时如何获取数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

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