c++ - 如果传递给函数,则确定数组的大小

标签 c++ arrays null pointers

如果将数组传递给另一个函数(未传递大小),是否可以确定数组的大小?数组初始化为 int array[] = { XXX } ..

我知道不可能执行 sizeof,因为它会返回指针的大小。我问的原因是因为我需要在传递数组的另一个函数中运行 for 循环。我试过类似的东西:

for( int i = 0; array[i] != NULL; i++) {
........
}

但我注意到在数组的近端,array[i] 有时包含垃圾值,如 758433,这不是在数组初始化时指定的值。

最佳答案

其他答案忽略了 c++ 的一个特性。您可以通过引用传递数组,并使用模板:

template <typename T, int N>
void func(T (&a) [N]) {
    for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements
}

然后你可以这样做:

int x[10];
func(x);

但请注意,这仅适用于数组,不适用于指针。

但是,正如其他答案所指出的,使用 std::vector 是更好的选择。

关于c++ - 如果传递给函数,则确定数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432654/

相关文章:

python-2.7 - Python ctypes : How to pass NULL as argument with format const char **

javascript - 类型错误 : Cannot read property "length" from null

c++ - std::sort 用于 C++ 中的二维 vector

c++ - 初始化列表中 const 引用成员的初始化

c++ - 协助 C++ 程序分析

python - 从具有给定索引数组的 3d numpy 数组中删除 numpy 数组元素

javascript - 我的 o/p 中有两个数组。一个是结果数组,另一个是数据数组如何将两个数组合并为一个与坐标匹配的数组

javascript - 如何循环遍历类并在数组中添加文本

c++ - C++ 建议中的舍入错误

java - 数组类的空指针异常