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