gpt4 book ai didi

c++ - 在函数参数中有大小的数组是什么意思

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:20:21 24 4
gpt4 key购买 nike

我看到一个看起来像这样的函数

int foo(int array[100])
{
...
}

这和

有什么不同
int foo(int *array)

有什么不同吗?

在什么地方应该/可以使用前一种方法。

最佳答案

它们在功能上是相同的。您应该使用第二种方法并传递数组长度的参数

否则,你是在自找麻烦:

// this will compile without warning, even if using -Wall
int myArray[50] = {0};
foo(myArray);

如果 foo() 假设数组实际上有 100 个元素长,它会溢出数组。

更好的方法:

int foo(int *array, size_t array_len) {
// do stuff
}

更好的是,使用一个 vector,它带有它的大小,并且你不能(在正常情况下)访问超出 vector 末尾的部分:

int foo(const std::vector<int>& array) {
// do stuff
}

关于c++ - 在函数参数中有大小的数组是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com