1
4

3 回答 3

1

clang的错误信息更好:

error: array type 'float [width][height]' is not assignable

数组不可赋值。你已经声明

float leNoise[octave][width][height];

然后尝试分配二维组件数组:

for (i = 0; i < octave; i++)
{
   /* Big problem here: moving data from a two-dimensional array
* to a three-dimensional array */
    leNoise[i] = smoothNoise[i];
}

由于数组不可分配,因此您必须在memcpy此处 [直接或使用 ] 一个接一个地复制值。

但,

float smoothNoise[width][height];

smoothNoise是一个width×height数组,并且smoothNoise[i]是一个float[height](然后转换为指向其初始元素的指针),所以你有一个维度不匹配,我不知道你打算在这里做什么,所以我不能建议修复。

于 2013-05-08T21:05:28.093 回答
1

据我所知,这项任务是罪魁祸首。

for (i = 0; i < octave; i++)
{
   /* Big problem here: moving data from a two-dimensional array to a three-dimensional array */
   leNoise[i] = smoothNoise[i];
}

因为C 没有任何称为数组到数组复制的东西。您应该通过仔细循环数组来手动将单个项目从源复制到目标。

Ex, leNoise[x][y][z] = smoothNoise[i][j]
于 2013-05-08T21:05:20.677 回答
0
#include<stdlib.h>

你必须包含它,它会删除其他警告关于数组我不知道这种复制是否可以从 3D 到 2D 数组所以不能帮助。

于 2013-05-08T21:21:05.857 回答