【发布时间】:2016-11-08 20:01:21
【问题描述】:
我正在尝试制作井字游戏,但遇到了警告。我知道代码仍然可以编译,但我想知道为什么会出现这个警告以及我可以做些什么来修复它。
当 p = a 时我收到警告;
void clean(){
char a[N][N], *p;
p = a;
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
*p++ = '_';
}
}
display(a);
}
void display(char a[N][N]){
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
printf("%c ", a[i][j]);
}
printf("\n");
}
}
【问题讨论】:
-
p是char *类型,而a在衰减后变成char (*)[N]类型的指针。 -
你会把每个变量声明放在单独的行上;)
-
数组不是指针。通常,编译器不仅会说“警告:有问题”,还会提供更准确的原因。请参阅How to Ask 并听从建议!
-
请注意,
clean()正在尝试清除并显示一个本地数组,该数组将在函数返回时被遗忘。 -
@WeatherVane:OP 没有提供足够的上下文,也没有返回数组。我们不知道他的意图。