Compartilhar via


Multidimensional matrizes (C)

Uma expressão de Subscrita também pode ter vários subscritos, da seguinte maneira:

expression1 [expression2] [expression3]...

Expressões subscritos associar da esquerda para a direita.A expressão de Subscrita mais à esquerda, Expressão1Expressão2, é avaliado primeiro.O endereço que resulta da adição de Expressão1 e Expressão2 constitui uma expressão do ponteiro; em seguida, expression3 é adicionado a esta expressão do ponteiro para formar uma nova expressão do ponteiro, e assim por diante, até que a última expressão Subscrita foi adicionada.O operador de indireção (*) é aplicada após a última subscrito expressão é avaliada, a menos que os endereços de valor do ponteiro final um array digite (consulte os exemplos a seguir).

Expressões com vários subscritos se referem a elementos de "matrizes multidimensionais". Uma matriz multidimensional é uma matriz cujos elementos são matrizes.Por exemplo, o primeiro elemento de uma matriz tridimensional é uma matriz com duas dimensões.

Exemplos

Para os exemplos a seguir, uma matriz chamada prop é declarado com três elementos, cada um deles é uma matriz de 4-por-6 de int valores.

int prop[3][4][6];
int i, *ip, (*ipp)[6];

Uma referência para o prop matriz tem esta aparência:

i = prop[0][0][1];

O exemplo acima mostra como referir-se à segunda individuais int elemento do prop.Arrays são armazenados por linha, para que o último subscrito varia mais rapidamente; a expressão prop[0][0][2] refere-se para o próximo elemento (terceiro) do array e assim por diante.

i = prop[2][1][3];

Essa afirmação é uma referência mais complexa para um elemento individual do prop.A expressão é avaliada como segue:

  1. O primeiro subscrito, 2, é multiplicado pelo tamanho de um 4 por 6 int matriz e adicionado ao valor do ponteiro prop.O resultado aponta para a matriz de terceiro 4 por 6 de prop.

  2. O segundo subscrito, 1, é multiplicado pelo tamanho do elemento-6 int matriz e adicionado ao endereço representado por prop[2].

  3. Cada elemento da matriz de elementos de 6 é um int valor, isso o subscrito final, 3, é multiplicado pelo tamanho de um int antes de ser adicionado para prop[2][1].O ponteiro resultante aborda o quarto elemento da matriz de elementos de 6.

  4. O operador de indireção será aplicado ao valor do ponteiro.O resultado é o int elemento nesse endereço.

Nesses casos de Mostrar próximos dois exemplos em que o operador de indireção não é aplicado.

ip = prop[2][1];

ipp = prop[2];

Na primeira das afirmações a seguir, a expressão prop[2][1] é uma referência válida para a matriz tridimensional prop; refere-se para uma matriz de elementos 6 (declarada acima).Desde que o valor do ponteiro endereços de uma matriz, o operador de indireção não é aplicado.

Da mesma forma, o resultado da expressão prop[2] na segunda instrução ipp = prop[2]; é um valor de ponteiro endereçamento de uma matriz bidimensional.

Consulte também

Referência

Operador subscrito:]