【发布时间】:2021-10-31 16:14:24
【问题描述】:
我有这样的数组声明
第一种方式
int size=256*10;
float *array=(float*)malloc(size * sizeof(float));
for(int i=0;i<2398;i++)
data[i]=data[i]*900;
当我使用这个为什么在声明中我的代码运行时没有错误但是
当我像这样使用数组作为常量值时:
第二种方式
float array[]={120.0, 160.0, 255.0, 216.0, 255.0, 224.0, 0.0, 16.0,
74.0, 70.0, 73.0, 70.0, 0.0, 1.0, 1.0};
即使我以第一种方式获取数组输出并将其定义为第二种方式,我也没有从代码中得到所需的内容?!! 我认为以第二种方式定义一个数组是正确的并且等同于第一种定义?! 声明与第一种方式等效的数组的正确方法是什么?
【问题讨论】:
-
正确的方法是使用
std::vector。 -
请为该错误创建一个minimal reproducible example。
double array[]={120.0, 160.0, 255.0, 216.0, 255.0, 224.0, 0.0, 16.0, 74.0, 70.0, 73.0, 70.0, 0.0, 1.0, 1.0};应该可以工作。 -
天啊!你有 2560 个常量值吗?
-
"声明数组的正确方法是什么" -- 对于初学者,有错误的行没有声明数组;您的数组在以
float开头的行上声明。然后有一个问题,你似乎有两种不同的初始化——提供一个值列表和动态分配。你两个都需要吗?为什么要在这里使用动态分配(以及为什么要使用malloc()而不是new或make_unique)? -
也许问题不在你想的地方。这就是为什么展示一个最小的可重现示例很重要。如果您的问题可能出在我们看不到的代码中,那么我们无能为力。