我想要求用户输入一个整数来创建一个二维数组,如下所示:
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/