从 C 中的指针获取数组的大小
在 C 中,确定作为指针传递的数组的大小可能具有挑战性。数组表现出“数组/指针等效性”,其中数组在作为函数参数传递时可以衰减为指针。这就带来了准确确定数组大小的问题。
为了解决这个问题,我们不能依赖 sizeof(),因为它返回指针的大小,通常是 4 或 8 字节,而不是数组的数量。数组中的元素。相反,我们必须显式传递数组的大小作为附加参数。
解决方案:
修改函数头以包含数组大小的参数:
int largest(int *list, size_t size)
将数组的大小与指向的指针一起传递函数:
static const size_t ArraySize = 5; int array[ArraySize]; int result = largest(array, ArraySize);
通过显式传递大小,函数可以适当地确定数组中元素的数量。
替代方法:
如果我们只有一个指向数组的指针而不是原始数组变量,我们可以使用以下方法计算大小公式:
size = sizeof(pointer_variable) / sizeof(array_element_type)
例如,如果我们有一个指针 int *ptr ,指向一个未知大小的整数数组,我们可以按如下方式确定大小:
size = sizeof(ptr) / sizeof(int);
以上是如何获取 C 中作为指针传递的数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!