我在尝试用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]

07-24 09:51
查看更多