gpt4 book ai didi

c - C中如何确定数组元素的个数?

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:28 25 4
gpt4 key购买 nike

我在 C 中有一个函数(我使用的是 gcc 4.8.0),它接收一个数组作为它的参数。有没有一种方法可以在不传递额外参数 array_count 的情况下准确确定数组中元素的数量?

最佳答案

通常无法确定作为参数传递的数组元素的数量。

当您在 C 中将数组作为参数传递时,您只传递指向该数组的指针,即指向保存该数组的内存区域的第一个元素(索引为 0)的指针。

程序员通常习惯将数组的大小作为另一个参数传递。例如,标准 qsort(3)库函数期望将数组中要排序的元素数作为其第二个 nmemb 参数。

或者,您可以使用 flexible array members ,例如传递(在 C99 中,而不是在早期的 C 标准中)结构的地址,例如

struct my_flexarray_st {
int size; // allocated size
int len; // used length, should be less than size
double arr[]; /// only len numbers are meaningful
};

无论您使用什么方法,您都需要了解数组大小是函数在通过参数传递时通常已知的。因此,请记录该约定。你甚至可以有一个(坏的)约定,即所有数组都有一些全局变量作为它们的维度。

对于堆分配的内存区域,标准为您提供了 malloccalloc 和 friend 来获取这些新区域,但无法查询它们分配的大小。一些 C 库有非标准的扩展来查询(但我不建议使用它们)。

最近C++11 (这与 C 语言不同)您可能对 std::vector 感兴趣和 std::array模板容器。

关于c - C中如何确定数组元素的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19198243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com