我想使用&arr
指向完整arr
而不仅仅是第一个元素的事实来计算这样的数组长度
int size = *(&arr + 1) - arr ;
现在这将在 main 函数中工作,但我想计算未定义数组并arr
作为参数的函数中的大小。
Asarr
在传递给函数时衰减为指针。sizeof(arr)/sizeof(arr[0])
方法不起作用
sizeof(int*) / sizeof(int)
// i.e. 4/4 = 1.
我想&arr
在函数内部使用方法,但由于某种原因这也不起作用......这就是为什么我想&arr
在函数内部作为参数传递。我尝试通过将其&arr
作为参数写入来简单地传递它,但我很困惑&arr
它所说的数据类型是什么。
expected 'int *' but argument is of type 'int (*)[4]'
这很好,因为我int(*)[4]
只传递但是如何指定这个内部函数参数?
在 C++ 中传递对数组的引用的语法是:
template <typename T, std::size_t N>
std::size_t size(const T (&a)[N])
{
return N;
}
对于 C,您没有模板来推断大小,因此类型/大小将被硬编码:
void foo(const int (*arr)[42])
{
// ...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句