只写到初始迷宫是就出问题啦,真不知道,哪错了啊,这么简单的代码,应该不会有问题啊,呵呵。麻烦大家帮我看看啊,非常感谢啦。
代码如下:
#include<stdio.h>
#include<string.h>
#define MAZESIZE 5
static char maze[MAZESIZE][MAZESIZE];
char *initmaze(){
char *p;
int i=0;
for(i=1;i<5;i++){
maze[i][0]='#';
}
for(i=0;i<5;i++){
maze[i][4]='#';
}
maze[0][1]='*';
maze[0][2]='#';
maze[0][3]='#';
maze[1][1]='*';
maze[1][2]='*';
maze[1][3]='*';
maze[2][3]='*';
maze[2][1]='#';
maze[2][2]='#';
maze[3][1]='*';
maze[3][2]='*';
maze[3][3]='*';
maze[4][1]='#';
maze[4][3]='#';
//set start and exit
maze[0][0]='!';
maze[4][2]='@';
p=&maze[0][0];
return p;
}
void showmaze(char *maze){
int i=0;
int j=0;
for(i=0;i<MAZESIZE;i++){
for(j=0;j<MAZESIZE;j++){
printf("%c",*(maze+i)+j);
}
printf("\n");
}
}
void main(){
char *maze;
maze=initmaze();
showmaze(maze);
getch();
}
能不能解释一下,这个为什么错了呢?非常感谢。
代码:
printf("%c",*(maze+i)+j);
maze是个指针,指向的是个二维数组,i*MAAZESIZE相当于二维数组的第i行,这样写才能输出每一个元素*(maze+i)+j是第i个元素的元素值加上j,*的优先级要比+号高
追问我查了一下书,另外有两种写法:
(1)*(maze[i]+j)
(2)*(*(maze+i)+j)
但我在这个程序里试了一下,这两种都不行,只有你那种能得出正确结果,想问一下,这是为什么?
(1)和(2)是一样的,都是针对二维数组的,或者指针的指针用的,而你定义的maze是个指针,那么写语法上就错了。
多说一句吧,maze[i]已经代表一个字符了,maze[i]+j代表了字符maze[i]的值加j,你再解引用是什么意思?下面的一样