【发布时间】:2020-05-01 06:06:44
【问题描述】:
我只是想创建一个包含“包含单个字符的数组”的数组。 于是我写了:
#include <stdio.h>
int main(){
char *field[20][20];
for(int i=0;i<20;i++){ //makes blank 2d field with spaces only
for(int j=0;j<20;j++){
field[i][j]=" ";
}
}
//debug field visualisation
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
printf("%c",field[i][j]);
}
printf("\n");
}
return 1;
}
但奇怪的是,我得到“D”而不是“”作为每个字段元素的输出:
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDD
这是为什么呢?我想也许是因为如果有一些奇怪的选角问题或因为 poiters,我迷路了。谢谢!
【问题讨论】:
-
@Blaze 不,您的评论是错误的! ,
field是pointers的二维数组 -
哦,哇,
printf("%c",field[i][j])让我大吃一惊,当然标题说它是一个二维字符数组。在这种情况下,它应该是%s。 -
您是否收到关于声明
printf("%c",field[i][j]);的任何警告? -
@Blaze 我宁愿看一下定义。
-
我投票决定重新打开,因为这个关闭的原因对这个问题没有意义。这个问题只问一个问题。
标签: c arrays pointers casting char