从C中的函数更改数组值

时间:2016-11-30 21:48:46

标签: c

程序在源代码中提到的指令中崩溃(我没有编写所有代码,因为它太长了)

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]='-';
    }
}

1 个答案:

答案 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])