gpt4 book ai didi

c++ - 将动态数组传递给其他函数的正确方法

转载 作者:可可西里 更新时间:2023-11-01 18:16:16 29 4
gpt4 key购买 nike

将动态大小的数组传递给另一个函数的最“正确”方法是什么?

bool *used = new bool[length]();

我想出了几种编译方法,但我不太确定正确的方法是什么。

例如

这些会按值传递吗?

static void test(bool arr[])

static void test(bool *arr)

这个会通过引用传递吗?

static void test(bool *&arr)

谢谢

最佳答案

实际上,第一个想法是通过地址传递数组,而第三个想法是通过引用传递数组。您可以设计一个小测试来检查这一点:

void test1(int* a) {
a[0] = 1;
}

void test2(int a[]) {
a[1] = 2;
}

void test3(int *&a) {
a[2] = 3;
}

int main() {
int *a = new int[3]();
a[0] = 0;
a[1] = 0;
a[2] = 0;

test1(a);
test2(a);
test3(a);

cout << a[0] << endl;
cout << a[1] << endl;
cout << a[2] << endl;
}

这个测试的输出是

1
2
3

如果参数是按值传递的,则不能在函数内部对其进行修改,因为修改将保留在函数的范围内。在 C++ 中,数组不能按值传递,所以如果你想模仿这种行为,你必须传递一个 const int* 或一个 const int[] 作为参数.这样,即使数组通过引用传递,它也不会因为 const 属性而在函数内部被修改。

要回答您的问题,首选方法是使用 std::vector,但如果您绝对想使用数组,则应该使用 int* .

关于c++ - 将动态数组传递给其他函数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13006250/

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