gpt4 book ai didi

c++ - 在 C++ 中通过引用传递结构数组

转载 作者:太空狗 更新时间:2023-10-29 23:25:46 25 4
gpt4 key购买 nike

所以我对编程/C++ 还是比较陌生,并且仍在尝试围绕指针和通过引用传递以及所有内容进行思考。我现在想弄清楚的一个程序需要将一个结构数组传递给另一个函数。我通过直接将数组传递到那里来让它工作。它似乎工作正常。但是,我担心的是我相信我是按值传递它,而且我知道最好按引用传递结构,所以你不会每次都复制结构......

无论如何,这是我正在做的一个基本示例:

struct GoldenHelmet {
int foo;
string bar;
};

void pass (GoldenHelmet ofMambrino[], int size);

int main () {
GoldenHelmet ofMambrino[10];
int size = sizeof(ofMambrino) / sizeof(ofMambrino[0]);
ofMambrino[1].foo = 1;
pass(ofMambrino, size);
cout << ofMambrino[2].foo << endl;
return 0;
}

void pass (GoldenHelmet ofMambrino[], int size) {
ofMambrino[2].foo = 100;
ofMambrino[2].bar = "Blargh";
}

据我了解,它之所以有效,是因为数组已经是指针,对吧?但是按照我的配置方式,我是否仍然将结构的拷贝和所有内容传递给 pass() 函数?我试图通过引用传递它,但它似乎并不想以我尝试过的任何方式工作。

最佳答案

C++ 方式:

#include <array>

typedef std::array<GoldenHelmet, 10> Helmets;

void pass(Helmets &);

int main()
{
Helmets h;
h[1].foo = 1;
pass(h);
//...
}

void pass(Helmets & h)
{
h[2].foo = 100;
// ...
}

确实,我们通过引用传递数组。

关于c++ - 在 C++ 中通过引用传递结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798448/

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