求解决办法[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'到达终点
} #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'到达终点
} 为什么? jackz007 发表于 2022-11-20 18:10
可是这样的话n,m的值不会变化呀 jackz007 发表于 2022-11-20 18:10
子函数n,m的值不会返回给主函数 本帖最后由 jackz007 于 2022-11-20 18:40 编辑
mengxingyimei1 发表于 2022-11-20 18:25
子函数n,m的值不会返回给主函数
调用过 map() 后,作为输入参数的数组 ditu 中就包含了已经被修改的 ditu 的数值。 jackz007 发表于 2022-11-20 18:37
调用过 map() 后,作为输入参数的数组 ditu 中就包含了已经被修改的 ditu 的数值。
所以如果我想让主函数n,m的值改变,那还要在map最后再赋值一次 jackz007 发表于 2022-11-20 18:37
调用过 map() 后,作为输入参数的数组 ditu 中就包含了已经被修改的 ditu 的数值。
也就是说数组在子函数里被改变,主函数里那个数组也会改变,是这样吗? mengxingyimei1 发表于 2022-11-20 18:51
也就是说数组在子函数里被改变,主函数里那个数组也会改变,是这样吗?
是的 jackz007 发表于 2022-11-20 19:05
是的
好的,ok了,非常感谢
页:
[1]