如何在函数中返回指针数组
How do I return an array of pointers in a function?
所以我有一个指针数组,它引用了一个类的3个实例,我需要创建一个函数,获取对这3个实例的引用,并将其返回到该数组中。
以下是我一直在尝试的:
#include<cstdlib>
#include<cinttypes>
#include<random>
//Random number generator
uint8_t rand(uint8_t max){
std::default_random_engine generator;
std::uniform_int_distribution<uint8_t> distribution(0,max);
return distribution(generator);
}
class MyClass{
//...
}
myClass[100];
MyClass * getReferences(){ //What should the type of this be?
MyClass * arrayOfPointers[3];
for(uint8_t i=0;i<2;++i){
arrayOfPointers[i]=&myClass[rand(2)];
}
return arrayOfPointers;
}
int main(){
MyClass * arrayOfPointers[3]=getReferences();
return EXIT_SUCCESS;
}
如前所述,您正在返回一个指向局部变量的指针,但这是不正确的。
使用标准的库容器来避免C样式数组的陷阱和麻烦。
std::array<MyClass *, 3> getReferences()
{
std::array<MyClass *, 3> arrayOfPointers;
for(int i=0; i < 2; ++i) // don't use tiny int types of small for loops. it's not faster and it's harder to maintain
{
arrayOfPointers[i] = &myClass[rand(2)];
}
return arrayOfPointers;
}
int main()
{
std::array<MyClass *, 3> arrayOfPointers = getReferences();
}
在C++中返回指向局部变量的指针是不正确的。它可能导致内存冲突错误。如果您想从函数返回一个数组,您应该使用动态内存分配。CCD_ 1。使用后不要忘记删除它。delete[] arrayOfPointers;
相关文章:
- 在函数中返回无符号字符数组,但不返回指针
- 为什么需要返回指针来利用协方差?
- 野牛如何在解析树中返回指针
- 何时返回指针与返回对象的一般经验法则?
- 为什么使用 std::istream_iterator 构造函数返回指针
- 为什么我不能直接从返回指针的函数返回对指针的引用?
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- 为什么下面的代码段返回指针指向的值而不是指针的地址?
- 使用 map<char,strring> 的迭代器返回指针 map<char,strring>*
- 如何从类成员函数返回指针,例如 size_t * class :: function(); 并使用类析构函数 ~size
- 函数返回动态强制转换的指针,返回指针,就好像它根本没有被转换一样
- 从函数返回对指针的引用与返回指针相同?
- C++ 为什么访问数组中的元素会返回指针?
- 关于函数返回指针
- 返回指针或对私有成员的引用的替代方法
- 从函数返回指针
- 通过从当地的C风格阵列中返回指针来获取一个悬空的指针
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 为什么C 模板功能不支持返回指针
- 返回指针的语句 - 解释它是如何工作的以及为什么