Como declarar uma matriz multidimensional inicializada em C Programming

Na programação C, o segredo obscuro de arrays multidimensionais é que eles realmente não existem. Internamente, o compilador ainda vê as coisas como dimensões individuais - apenas uma longa gama completa de elementos. A notação dupla (ou tripla) suporte é usado para calcular o bom deslocamento na matriz em tempo de compilação. Isso é bom porque o compilador faz o trabalho.

Você pode ver como multidimensional matrizes traduzir em velhos matrizes chatas regulares quando você declará-los já inicializados. Por exemplo:

grade int [3] [4] = {5, 4, 4, 5,4, 4, 5, 4,4, 5, 4, 5} -

O grid array consiste em três fileiras de quatro itens cada. Como acabamos de mostrar, é declarada como uma grade e se parece com uma grade. Esta declaração funciona, desde que o último elemento não tem uma vírgula em seguida. Na verdade, você pode escrever a coisa toda como este:

grade int [3] [4] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

Esta declaração ainda define uma matriz multidimensional, mas você pode ver como ele é realmente apenas um vetor de dimensão única com índices duais. Na verdade, o compilador é inteligente o suficiente para descobrir as dimensões, mesmo quando você dá apenas um deles, como neste exemplo:

grade int [] [4] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

Na linha anterior, o compilador vê os 12 elementos em uma grelha de matriz, de modo que automaticamente sabe que é uma matriz de 3-a-4 com base no 4 nos suportes. Ou você pode fazer isso:

grade int [] [6] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

Neste exemplo, o compilador iria descobrir que você tem duas fileiras de seis elementos. Mas o exemplo a seguir é simplesmente errado:

grade int [] [] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

O compilador não vai ficar bonito. Na linha anterior, ele vê uma matriz unidimensional indevidamente declarado. Os colchetes extras não são necessários.

Exercício 1: Reescrever o código do Tic-Tac-Toe para que o tabuleiro de jogo tic-tac-toe é inicializado quando a matriz é declarada - incluindo colocar o X no lugar adequado.

JOGO DA VELHA

#include int main () {char tictactoe [3] [3] -int x, y - / * inicializar matriz * / for (x = 0-xlt; 3 x ++) for (y = 0-YLT; 3-y ++ ) tictactoe [x] [y] = '.'- tictactoe [1] [1] =' X '- / * tabuleiro de jogo de exibição * / puts ( "Pronto para jogar Tic-Tac-Toe?")-for(x=0-xlt;3-x++){for(y=0-ylt;3-y++)printf("%ct",tictactoe[x][y])-putchar('n')-}return(0)-}

menu