我有一个基本的问题:是否可以将int变量转换为常量,因此我可以静态地初始化一个给定长度的数组(没有指针和新函数)。我很好奇,我知道如何动态地做到这一点。 感谢
答案 0 :(得分:3)
数组的大小必须是编译时常量,即必须在编译时中知道。您显然无法将编译时未知的内容转换为编译时已知的内容,因为您在编译时不知道它。那怎么会工作,你期望价值回到过去吗?
如果您在编译时不知道所需的大小,请使用std::vector
,不是指针和new
。
答案 1 :(得分:0)
在评论中,您提到使用共享内存。通常,std :: vector适用于动态大小的数组。该类有一个分配器,它将增长数组并在需要时复制元素。这对共享内存不起作用。共享内存是一种特殊情况,其中数组大小是固定的,指针是在运行时确定的。
即使您在编译时知道共享内存段的大小,也可以使用如下语句:
char myData[100];
将为myData分配内存。共享内存是使用指针然后将其视为数组的好例子。例如,您可以这样做:
int total = 0;
int n = getSizeOfSharedMemorySomehow();
char *myData = getSharedMemoryPointerSomehow();
for (int i = 0; i < n; i++)
total += myData[i];