程序在源代码中提到的指令中崩溃(我没有编写所有代码,因为它太长了)
int main()
{
char screen[24][80];
//......every thing is well until this instruction
backgrounds(5,screen);
//......the program doesn't execute the rest of the code
}
//______________________________________________________
//this is a header file
void backgrounds(int choice,char **screen)
{
if(choice==5)
{
screen[18][18]='-';
screen[18][19]='-';
screen[18][20]='-';
}
}
答案 0 :(得分:3)
char [24][80]
无法转换为char **
。
当传递给函数时,数组衰减成指向其第一个元素的指针。这对于1维数组来说很简单,但对于更高的维度则更少。
在这种情况下,char [24][80]
是char [80]
的数组。因此,将此类型的变量传递给函数会产生char (*)[80]
。
将您的功能定义更改为:
void backgrounds(int choice,char (*screen)[80])
或者这个:
void backgrounds(int choice,char screen[24][80])
或者您可以使用可变长度数组来获得最大的灵活性:
void backgrounds(int choice, int x, int y, char screen[x][y])