可能重复:
How to find the sizeof(a pointer pointing to an array)
我将数组传递给函数。是否有任何方法可以在该函数中找到数组的大小。
我认为sizeof函数不起作用,因为只有指向数组第一个元素的指针传递给函数。
sizeof(arr)/sizeof(arr[0])
我认为上述代码不起作用。还有其他任何方式...
...谢谢
答案 0 :(得分:4)
使用原始数组,一旦作为指向函数的指针传递,就没有简单或可靠的方法来查找它的大小。 (例如,我不计算从二进制文件中读取调试信息这么简单。)
在C ++中,您可能应该使用std::vector<YourType>
,然后您可以轻松找到。
在C中,你必须确保传递大小和指针。
答案 1 :(得分:2)
如果您的c ++标记很严重,可以使用std::vector
,因为它会保留大小信息vec.size()
。否则,您需要将大小传递给函数,或者让结构/类保持数组和大小。
答案 2 :(得分:1)
如果你只有一个指向第一个元素的指针,那么没有,就无法知道数组的大小。如果你真的需要知道尺寸,你有几个选择;
答案 3 :(得分:0)
不,没有。这就是为什么C标准库中的所有合理函数都传递一对(pointer, size)
作为参数。在C ++中,惯例是传递两个指针,(start, end)
代替,这几乎是等价的。