gpt4 book ai didi

c++ - 如何创建一个 void 数组,其大小将由用户从命令行输入指定?

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:39 25 4
gpt4 key购买 nike

我想要求用户输入一个整数来创建一个二维数组,如下所示:

void* myArray_1[2][userInput];

这是编译器不允许的,因为 userInput 不是常量。

然后我试了一下:

void** myArray_2 = new void*[rowCount];
for(int i = 0; i < rowCount; ++i)
myArray_2[i] = new void[colCount];

导致以下错误:

Error: array of void is NOT allowed.

如何创建一个 void 数组,其大小将由用户从命令行输入指定?

编辑:
我的函数原型(prototype)是:
errorType EventGet (EVENT_HANDLE hEvent, void * pBuffer);

我用过这个:

void* myArray_3[2][10];
...
myArray_3[0][count++] = myOtherArray[0]; //myOtherArray[0] contains a handle and myOtherArray is an 1D array with size of 2.
EventGet ( myEventHandle, myArray_3[0][i]);

我得到了正确的结果。现在我唯一想要的是允许用户指定第二个维度大小而不是 10。

最佳答案

杀戮点不是传球、指向或任何类似的东西,问题就在这里:

myArray_2[i] = new void[colCount];

new void[colCount]; 说“给我一个 void 的数组。” void 是“无类型”的占位符,不能实例化。您实际上将创建一个空数组。没有什么是没有定义的。没有尺码。这是做不到的。

但是,OP 希望复制 Variable Length Array

void* myArray_1[2][userInput];

为此,OP 需要进一步间接一个级别,并存储 void * 的二维数组(实际上是数组的数组)。

void*** myArray_2 = new void**[rowCount];
for(int i = 0; i < rowCount; ++i)
myArray_2[i] = new void*[colCount];

这将给出 void* myArray_1[2][userInput];

的外观

首选的 C++ 方法是使用容器为您和 use a std::vector 管理内存:

std::vector<std::vector<void*>> myVector_1(2, std::vector<void*>(userInput));

定义一个 vector,其中包含一个 vector,该 vector 包含指向 void 的指针。外部 vector 预先设置为 2 个元素,内部 vector 预先设置为 userInput 元素。

关于c++ - 如何创建一个 void 数组,其大小将由用户从命令行输入指定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41410116/

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