正在通过指针访问提供的数组的长度[重复]

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&lt;int&gt;:

void len(std::vector<int>& A) 
    // A.size() returns the length

【讨论】:

理论上你不能,但在某些存在哨兵的情况下是可能的。当然,重要的是哨兵在该数组中是唯一的。 @Michi 是的,这是一种解决方法。

以上是关于正在通过指针访问提供的数组的长度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何得到指针指向的数组的长度

在其内存应该已被释放后访问可变长度数组

go语言之指针

python-leetcode26-双指针删除排序数组中的重复项

chararray的大小和长度不一样[重复]

如何找到由拆分函数创建的数组的长度[重复]