我一直有这些错误与我的数组。我应该如何返回一个未知大小的二维数组?我试图通过将其转换为数组然后进行数组操作来操纵一个pbm图像。这是我的代码错误:可变大小的数组可能未初始化
typedef struct
{
unsigned char blackWhite;
} PBMPixel;
typedef struct
{
int x, y;
PBMPixel *data;
} PBMImage;
这是在我的头文件中定义的,它没有给我任何问题。后来,我有这样的:
char * ArrayCreate(PBMImage *img, int x, int y)
{
char ManipArray[x][y];
int i = 0;
int j= 0;
for(i=0; i < x; i++)
{
for (j=0; j < y; j++)
{
char ManipArray[i][j] = img->data[(i*(j+1)+j)].blackWhite;
j++;
}
i++;
}
return ManipArray;
}
这些都是我不断收到后面的错误:
P-MFunctionHolder.c: In function 'ArrayCreate':
P-MFunctionHolder.c:171:4: error: variable-sized object may not be initialized
P-MFunctionHolder.c:176:2: warning: return from incompatible pointer type [enabled by default]
P-MFunctionHolder.c:176:2: warning: function returns address of local variable [enabled by default]
我使用的MinGW和Windows 8是否有帮助,但我怀疑这就是问题所在。我也没有发布整个代码,因为这是大约260行,并给出了一堆完全相同的错误。
可以尝试字符** arraycreate(PBMImage,INT的x,int y)对 –
'炭ManipArray [i] [j] = img->数据[(I *(j +1)+ j)]。blackWhite;' - >也许'ManipArray [i] [j] = img-> data [(i *(j + 1)+ j)]。也是'j ++;'和'i ++;'两次。坏! '返回ManipArray;'超出范围。 – BLUEPIXY