gpt4 book ai didi

c - 错误 : variable-sized array may not be initialized

转载 作者:行者123 更新时间:2023-12-05 01:35:14 25 4
gpt4 key购买 nike

我的数组一直有这些错误。我应该如何返回未知大小的二维数组?我正在尝试通过将 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 行,并且给出了一堆完全相同的错误。

最佳答案

How am I supposed to return a 2d array of unknown size?

此问题的典型解决方案是将堆上的内存分配给指针,隐式地将释放分配的责任传递给调用者。

例如:

char * ArrayCreate(PBMImage *img, int x, int y)
{
char *const ManipArray = malloc(x * y * sizeof(char));
int i = 0;
int j= 0;
for( i=0; i < x; i++)
{
for ( j=0; j < y; j++)
{
ManipArray[i * y + j] = img->data[(i*(j+1)+j)].blackWhite;
j++;
}
i++;
}
return ManipArray;
}

关于c - 错误 : variable-sized array may not be initialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com