首页 > 后端开发 > C++ > 如何获取 C 中作为指针传递的数组的大小?

如何获取 C 中作为指针传递的数组的大小?

Patricia Arquette
发布: 2024-12-22 03:52:12
原创
262 人浏览过

How Can I Get the Size of an Array Passed as a Pointer in C  ?

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板