第一次函数用数组解体,就一直报错,求大佬指点

#include<iostream>

#include<string.h>

#include<ctype.h>

#include<iomanip>

#include<stdio.h>


using namespace std;

void search(char st[],int m,int n);


int main(void)

{

    int r,p=0,m=0,n=0,time=0;

char st[5][4];

int a,b;

    char ope[99];

    char button;

    while(1)

    {time++;

        memset(st,0,sizeof(st));

        for(r=1; r<=5; r++)

        {


            st[r]=getchar();

            if(st[1][0]=='Z')

            {

                p=1;

                break;

            }

        }

        if(p)

            break;



            search(st,m,n);

      while((button=getchar())!='0')

      {

          switch(button)

      {case 'A':

        st[m][n]=st[m-1][n];

        st[m-1][n]=' ';

        m=m-1;

        break;


        case'B':

        st[m][n]=st[m+1][n];

        st[m+1][n]=' ';

        m=m+1;

        break;

        case'R':

        st[m][n]=st[m][n+1];

        st[m][n+1]=' ';

        n=n+1;

        break;

        case'L':

        st[m][n]=st[m][n-1];

        st[m][n-1]=' ';

        n=n-1;

        break;}

      }


      cout<<"Puzzle #"<<time<<":"<<endl;

      if(m*m<25&&n*n<25){

        for(a=1;a<=5;a++)

    for(b=0;b<=4;b++)

    {if(b<4)cout<<st[a][b]<<' ';

    if(b==4)cout<<st[a][b]<<endl;

    }

cout<<endl;}

else cout<<"This puzzle has no final configuration."<<endl<<endl;}

    return 0;


    }

https://img3.mukewang.com/5bad526600019a0409890134.jpg

https://img3.mukewang.com/5bad526600019c8712970155.jpg

void search(char st[],int m,int n)

{int a,b,stop=0;

for(a=1;a<=5;a++)

   {


    for(b=0;b<=4;b++)

    {if(st[a][b]==' '){m=a;n=b;break;stop=1;}}

    if(stop)break;}

    }

spacer.gif



慕用7336610
浏览 1835回答 2
2回答

onemoo

我没看你的代码逻辑,单就导致错误的点说下:在 main 函数中,别用所谓的“二维数组”char st[5][4],改为普通数组——比如 char st{20}——这样传入 search 函数时才不会报错。至于原因,你学了指针就知道了。  那么 search 中访问 st 元素的方式也要据此变化。

onemoo

你先说说,已经学过“指针”“指针和数组的关系”了吗?
打开App,查看更多内容
随时随地看视频慕课网APP