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

Converting to constant type, initializing an array

本文关键字:初始化 数组 类型 常量 转换      更新时间:2023-10-16

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

数组

的大小必须是编译时常量,即必须在编译时知道。显然,您不能将编译时未知的内容转换为编译时已知的内容,因为编译时您不知道它。这甚至如何运作,您是否期望价值回到过去?

如果在编译时不知道所需的大小,请使用 std::vector而不是指针和new

在评论中,您提到了使用共享内存。 通常,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];