转换为常量类型,初始化数组

时间:2014-12-10 17:15:10

标签: c++ arrays dynamic

我有一个基本的问题:是否可以将int变量转换为常量,因此我可以静态地初始化一个给定长度的数组(没有指针和新函数)。我很好奇,我知道如何动态地做到这一点。 感谢

2 个答案:

答案 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];