我有一个函数,如
currentCompressedLetter = malloc(extractHeight * sizeof(int*));
for (i = 0; i < extractHeight; i++)
currentCompressedLetter[i] = malloc(extractWidth * sizeof(int));
将值设置为全局数组int **currentCompressedLetter
当我尝试使用单独的函数打印输出到屏幕时,我将currentCompressedLetter
作为参数传递,它给出了错误的输出。
void print(int height, int width, int sq[height][width])
{
int i = 0, j = 0;
while(i < height)
{
while(j< width)
{
if (sq[i][j] == 1)
printf(".");
else if (sq[i][j] == 2)
printf("=");
else printf("'");
j++;
}
printf("n");
i++;
j = 0;
}
}
但是如果我将print语句复制到第一个函数中,它就能正常工作。所以问题是,一旦它离开那个函数,它就没有被正确地发送给全局变量。如何修改
这个函数期望一个vla数组,但是你的currentCompressedLetter
指向一个指针数组。
我假设您希望使用print
来打印currentCompressedLetter
。然而,这是不可能的,因为VLA不是指针(也不是固定长度的数组)。如果您尝试这样做,您将得到一条编译器消息。你不应该忽略编译器消息,即使它们看起来是"only"警告。
最简单的修复方法是将print
更改为:
void print(int height, int width, int **sq)
并保持其内容不变。如果您还想打印vla,那么可以使用两个单独的函数。