为什么不能在 C 中的函数中创建一个类似于我下面的数组?
int **image;
int height, weight;//initialized in a method not shown
void generateMatrices()
{
image = (int **)malloc(sizeof(int*) * height);
if(image == NULL)
{
fprintf(stderr, "Image matrix could not be made\n");
exit(-1);
}
int y;
for(y = 0; y < height; y++)
{
image[y] = (int *)malloc(sizeof(int) * width);
if(image[y] == NULL)
{
fprintf(stderr, "Image matrix row %d could not be made\n", y);
exit(-1);
}
}
}
int main(int argc, char* argv[])
{
generateMatrices();
image[height-2][width-2] = 90;//Fails here
return 0;
}
首先,我想为提出这个不清楚的问题道歉。澄清一下,我确实知道如何制作这些矩阵,事实上,它确实有效。但是,所有这些代码最初都在我的主要语句中,我想通过将其放入各种方法来重构我的代码。其中一种方法名为 generateMatrices()。出于某种原因,即使矩阵被认为是全局的,并且即使它们存在于方法中,当我尝试从该方法外部访问它们时,例如在主要之后立即访问它们时,我得到一个段错误。
另一个编辑以进一步澄清代码。
事实证明,这段代码确实有效,而且我显然是在初始化height
并且width
在我调用了这个方法之后。浪费大家的时间是我的坏事。