我在尝试用C做井字游戏时感到困惑。我正在看一本书,该书使用8个元素的单个char数组创建木板。我知道array [8]包含9个元素,但是如果将数组声明为char数组,因为它必须包含空格以制作游戏的空白板,所以不应该将其设为array [9],因为它必须包含9个字符以及一个空字符'\ 0'?将板转换为2d数组时,我也有同样的疑问,因为我知道板应该由array [3] [3]制成,但是如果我想将其声明为char,则将其放置在哪里?空字符?
最佳答案
如果使用字符数组存储字符串,则需要以零结尾。
对于您的任务,无需在数组中存储字符串。
因此,在C中,您可以通过以下方式声明3 * 3数组
char board[3][3] =
{
" ", // three spaces
" ",
" "
};
尽管数组的每个元素都是由字符串文字初始化的,但将不包含结尾的零。
另一方面,如果您认为输出这样的数组会更简单,则可以在每个元素中包含终止零。在这种情况下,数组应定义为
char board[3][4] =
// ^^^
{
" ", // three spaces
" ",
" "
};
至于你的陈述
数组[8]包含9个元素
那么该数组将被声明为正好具有八个元素。 :)
我认为您的意思是字符串文字。例如,由于存储在文字中的终止零,C中的字符串文字
"Hi"
具有类型char[3]
。