正在通过指针访问提供的数组的长度[重复]
Posted
技术标签:
【中文标题】正在通过指针访问提供的数组的长度[重复]【英文标题】:getting the length of array provided array is being accessed through pointer [duplicate] 【发布时间】:2020-11-01 07:33:51 【问题描述】:例如。 我有一个功能
void len(int *A) // or we have its reference
// can I find the length of array here or
// we just need to pass the length along as the parameter
【问题讨论】:
你不能。A
是一个指针,而不是一个数组。除非你真的需要,否则使用 std::vector
而不是显式传递长度。另请查看std::span
- 它将在 C++20 中可用。
【参考方案1】:
我可以在这里找到数组的长度还是我们只需将长度作为参数传递
一旦数组衰减为指针,您将无法找到长度,因此一种选择是按照您自己所说的那样提供长度作为参数。
另一种选择是不让它衰减成指针:
template<size_t N>
void len(int(&A)[N])
// N is the length
或者你可以使用std::vector<int>
:
void len(std::vector<int>& A)
// A.size() returns the length
【讨论】:
理论上你不能,但在某些存在哨兵的情况下是可能的。当然,重要的是哨兵在该数组中是唯一的。 @Michi 是的,这是一种解决方法。以上是关于正在通过指针访问提供的数组的长度[重复]的主要内容,如果未能解决你的问题,请参考以下文章