mengxingyimei1 发表于 2022-11-20 17:31:44

求解决办法[Warning] return makes integer from pointer without a cast

#include <stdio.h>

int map(char ditu)
{
        int n = ditu;
        int m = ditu;
        char zhiling;//用户输入移动WASD
        //输出数组ditu地图
        int i, j;
        for(i = 0;i < 10;i++){
                for(j = 0;j < 10;j++){
                        printf("%c",ditu);
                }
                printf("\n");
        }
        //用户输入
        scanf("%c", &zhiling);
        getchar();
        //判断是否能够移动
        if(zhiling == 'S' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                n++;
        }
        else if(zhiling == 'D' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                m++;
        }
        else if(zhiling == 'A' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                m--;
        }
        else if(zhiling == 'W' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                n--;
        }
        //返回多个变量给主函数n,m在ditu里面
        return ditu;
}

void main()
{
        int n = 1,m = 0;//下标
        //迷宫地图' '表示可移动,'#'表示墙体不可移动,'0'表示人物
        char ditu =
        {
                '#', '#', '#', '#', '#', '#', '#', '#', '#', '#',
                '0', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#',
                '#', ' ', '#', ' ', ' ', ' ', '#', '#', ' ', '#',
                '#', ' ', ' ', ' ', '#', '#', ' ', '#', ' ', '#',
                '#', '#', '#', ' ', '#', ' ', ' ', '#', ' ', '#',
                '#', ' ', ' ', ' ', '#', ' ', '#', '#', ' ', '#',
                '#', '#', ' ', '#', '#', ' ', ' ', ' ', ' ', '#',
                '#', '#', ' ', ' ', ' ', '#', '#', '#', ' ', '#',
                '#', ' ', ' ', '#', '#', ' ', ' ', ' ', ' ', '#',
                '#', '#', '#', '#', '#', '#', '#', '#', ' ', '#',
               n ,m ,
        };
        do{
                map(ditu);//调用函数来移动
                system("cls");
                printf("%d%d",n,m);//观察n,m是否变化
    }while(ditu != '0');//'0'到达终点
}

jackz007 发表于 2022-11-20 18:10:32

#include <stdio.h>
#include <stdlib.h>

void map(char ditu)
{
      int n = ditu;
      int m = ditu;
      char zhiling;//用户输入移动WASD
      //输出数组ditu地图
      int i, j;
      for(i = 0;i < 10;i++){
                for(j = 0;j < 10;j++){
                        printf("%c",ditu);
                }
                printf("\n");
      }
      //用户输入
      scanf("%c", &zhiling);
      getchar();
      //判断是否能够移动
      if(zhiling == 'S' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                n++;
      }
      else if(zhiling == 'D' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                m++;
      }
      else if(zhiling == 'A' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                m--;
      }
      else if(zhiling == 'W' && ditu != '#'){
                ditu = '0';
                ditu = ' ';
                n--;
      }
      //返回多个变量给主函数n,m在ditu里面
}

int main(void)
{
      int n = 1,m = 0;//下标
      //迷宫地图' '表示可移动,'#'表示墙体不可移动,'0'表示人物
      char ditu =
      {
                '#', '#', '#', '#', '#', '#', '#', '#', '#', '#',
                '0', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#',
                '#', ' ', '#', ' ', ' ', ' ', '#', '#', ' ', '#',
                '#', ' ', ' ', ' ', '#', '#', ' ', '#', ' ', '#',
                '#', '#', '#', ' ', '#', ' ', ' ', '#', ' ', '#',
                '#', ' ', ' ', ' ', '#', ' ', '#', '#', ' ', '#',
                '#', '#', ' ', '#', '#', ' ', ' ', ' ', ' ', '#',
                '#', '#', ' ', ' ', ' ', '#', '#', '#', ' ', '#',
                '#', ' ', ' ', '#', '#', ' ', ' ', ' ', ' ', '#',
                '#', '#', '#', '#', '#', '#', '#', '#', ' ', '#',
               n ,m ,
      };
      do {
                map(ditu)    ;//调用函数来移动
                system("cls");
                printf("%d%d",n,m);//观察n,m是否变化
    }while(ditu != '0');//'0'到达终点
}

mengxingyimei1 发表于 2022-11-20 18:17:45

为什么?

mengxingyimei1 发表于 2022-11-20 18:20:29

jackz007 发表于 2022-11-20 18:10


可是这样的话n,m的值不会变化呀

mengxingyimei1 发表于 2022-11-20 18:25:40

jackz007 发表于 2022-11-20 18:10


子函数n,m的值不会返回给主函数

jackz007 发表于 2022-11-20 18:37:40

本帖最后由 jackz007 于 2022-11-20 18:40 编辑

mengxingyimei1 发表于 2022-11-20 18:25
子函数n,m的值不会返回给主函数

      调用过 map() 后,作为输入参数的数组 ditu 中就包含了已经被修改的 ditu 的数值。

mengxingyimei1 发表于 2022-11-20 18:47:34

jackz007 发表于 2022-11-20 18:37
调用过 map() 后,作为输入参数的数组 ditu 中就包含了已经被修改的 ditu 的数值。

所以如果我想让主函数n,m的值改变,那还要在map最后再赋值一次

mengxingyimei1 发表于 2022-11-20 18:51:48

jackz007 发表于 2022-11-20 18:37
调用过 map() 后,作为输入参数的数组 ditu 中就包含了已经被修改的 ditu 的数值。

也就是说数组在子函数里被改变,主函数里那个数组也会改变,是这样吗?

jackz007 发表于 2022-11-20 19:05:19

mengxingyimei1 发表于 2022-11-20 18:51
也就是说数组在子函数里被改变,主函数里那个数组也会改变,是这样吗?

       是的

mengxingyimei1 发表于 2022-11-20 19:10:10

jackz007 发表于 2022-11-20 19:05
是的

好的,ok了,非常感谢
页: [1]
查看完整版本: 求解决办法[Warning] return makes integer from pointer without a cast