gpt4 book ai didi

c++ - 使用函数返回数组 - C++

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:19 24 4
gpt4 key购买 nike

我试图在函数中传递一个数组,然后打印出在数组中找到的值。

这是我的

数字.cpp

#include <iostream>
#include <string>
#include "numbers.h"

int * numbers::printNumbers() {

for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
arrayOne[j] =i;
}
}
return arrayOne;
}

数字.h

#ifndef try_numbers_h
#define try_numbers_h
#include <iostream>
#include <string>

class numbers {

public:

int * printNumbers();

private:

int arrayOne[4];
};

#endif

主要.cpp

#include <iostream>
#include <string>
#include "numbers.h"

int main () {
numbers printNum;
int * p;
p = printNum.printNumbers();

}

如上代码,运行成功

但是我的输出返回了一些奇怪的内存地址

输出

0x7fff5fbff8e0 

按理说应该输出

期待输出

0
1
2
3

最佳答案

您的代码是正确的。

它打印的内存地址是类变量arrayOne的开始地址。你看到那个而不是的原因:

0
1
2
3

是不是这段代码:

numbers printNum;
int * p;
p = printNum.printNumbers();

仅被分配给数组 arrayOne地址,而不是其内容的

这给我们带来了另一个问题:您没有看到任何输出,因为您没有打印出每个数组索引处的数据(如您的代码所示)。

为此,您应该迭代指针到数组 arrayOne 并输出它们,以便您可以查看/验证您的预期结果。

但是,由于您当前的方法违反了最小意外原则(因为您的方法名称是 printNumbers (但不打印数字并返回数组的地址),那么它重构您的代码以便您的函数 printNumbers 打印数字(并且不返回数组的地址)是个好主意。

而且,考虑到数组在其中确实具有内置的维度感(即它们不知道自己的维度,所以其他人建议使用 std::vector 相反,因为它更安全,可以自行清理,并且比具有类似性能的 C 样式数组具有更多的功能/优势。

关于c++ - 使用函数返回数组 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749778/

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