正在运行时查找数组的大小

Finding size of array at run time

本文关键字:数组 查找 运行时      更新时间:2023-10-16

可能重复:
如何查找的大小(指向数组的指针)

我正在将一个数组传递给一个函数。是否有任何方法可以在该函数中找到数组的大小。

我不认为sizeof函数的作用是将指向数组第一个元素的指针传递给该函数。

sizeof(arr)/sizeof(arr[0])

我认为上面的代码不起作用。还有别的办法吗。。。

谢谢。。。

使用原始数组,一旦将其作为指向函数的指针传递,就没有简单可靠的方法来查找其大小。(例如,我不认为从二进制文件中读取调试信息很简单。)

在C++中,您可能应该使用std::vector<YourType>,然后您可以很容易地找到它。

在C中,您必须确保传递大小和指针。

如果您的c++标记是严重的,您可以使用std::vector,因为它保留了大小信息vec.size()。否则,您需要将大小传递给函数,或者使用结构/类将数组和大小保持在一起。

如果只有指向第一个元素的指针,那么没有,就无法知道数组的大小。如果你真的需要知道尺寸,你有几个选择;

  • 使用正常数据中不存在的值终止数组(例如,C用于终止字符串的\0或指针数组中的NULL)
  • 将数组的长度与数组一起传递
  • 更改为知道大小的数据类型,如std::vector(不是C中的选项,但您也标记了C++)
  • 创建您自己的结构,该结构可以包含size+数组指针,并传递该指针

不,没有。这就是为什么C标准库中所有合理的函数都会传递一对(pointer, size)作为参数。在C++中,约定是传递两个指针,而不是(start, end),这几乎是等价的。