从 C 中的指针获取数组的大小
在 C 中使用数组时,一项常见任务是确定数组的大小或数量数组中的元素。但是,通过指针访问数组时,这可能会很棘手。
从指针确定数组大小的问题
考虑以下函数头:
int largest(int *list, int highest_index);
此函数旨在返回整数数组中的最大整数。当尝试使用指针确定“列表”数组中的元素数量时,就会出现问题。
不正确的方法
已尝试的一些不正确的方法包括:
int i = sizeof list/sizeof(int); //returns incorrect value int i = list.size(); // does not compile
这些方法要么返回不正确的值,要么无法编译,因为它们假设数组本质上是已知的指针。
正确方法:将数组大小作为参数传递
正确的方法是将数组大小作为附加参数传递给函数。这允许函数确定数组中的元素数量。
例如:
static const size_t ArraySize = 5; int array[ArraySize]; func(array, ArraySize);
在此示例中,函数 'func' 将数组指针和数组大小设为参数。
基本原理
C 允许数组衰减为指针当作为函数参数传递时。但是,指针本身不包含有关数组大小的信息。通过将数组大小作为参数传递,该函数能够正确确定数组中的元素数量。
结论
通过指针处理数组时,必须考虑的是,指针不具有有关数组大小的固有信息。解决方案是将数组大小作为附加参数传递给需要此信息的函数。
以上是使用指针时如何获取 C 中数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!