Compartilhar via


Declarações de matriz

Uma "declaração de matriz" nomeia a matriz e especifica o tipo dos respectivos elementos. Também pode definir o número de elementos na matriz. Uma variável com tipo de matriz é considerada um ponteiro para o tipo dos elementos da matriz.

Sintaxe

declaration:
declaration-specifiers init-declarator-listopt ;

init-declarator-list:
init-declarator
init-declarator-list , init-declarator

init-declarator:
declarator
declarator = initializer

declarator:
pointeropt direct-declarator

direct-declarator:
direct-declarator [ constant-expressionopt ]

Como constant-expression é opcional, a sintaxe tem dois formatos:

  • O primeiro formato define uma variável de matriz. O argumento constant-expression entre colchetes especifica o número de elementos na matriz. O constant-expression, se estiver presente, deve ter um tipo integral e um valor maior que zero. Cada elemento tem o tipo indicado por type-specifier, que pode ser qualquer tipo exceto void. Um elemento da matriz não pode ser um tipo de função.

  • O segundo formato declara uma variável que foi definida em outro lugar. Ele omite o argumento constant-expression entre colchetes, mas não os colchetes. Você só poderá usar esse formulário se já tiver inicializado a matriz, declarado-a como um parâmetro ou declarado-a como uma referência a uma matriz definida explicitamente em outro lugar do programa.

Nos dois formatos, direct-declarator nomeia a variável e pode modificar o tipo dela. Os colchetes ([ ]) depois de direct-declarator modificam o declarador para um tipo de matriz.

Qualificadores de tipo podem aparecer na declaração de um objeto de tipo de matriz, mas se aplicam aos elementos, e não à própria matriz.

Você pode declarar uma matriz de matrizes (uma matriz "multidimensional") colocando uma lista de expressões de constantes entre colchetes após o declarador de matriz, neste formato:

type-specifier declarator [ constant-expression ] [ constant-expression ] ...

Cada constant-expression entre colchetes define o número de elementos em uma determinada dimensão: as matrizes bidimensionais têm duas expressões entre colchetes, as matrizes tridimensionais têm três e assim por diante. Você poderá omitir a primeira expressão constante se tiver inicializado a matriz, declarado-a como um parâmetro ou declarado-a como uma referência a uma matriz definida explicitamente em outro lugar do programa.

É possível definir matrizes de ponteiros para diversos tipos de objetos usando declaradores complexos, conforme descrito em Interpretar declaradores mais complexos.

As matrizes são armazenadas por linha. Por exemplo, a seguinte matriz consiste em duas linhas com três colunas cada:

char A[2][3];

As três colunas da primeira linha são armazenadas primeiro, seguidas pelas três colunas da segunda linha. Isso significa que o último subscrito varia mais com mais rapidez.

Para fazer referência a um elemento individual de uma matriz, use uma expressão de subscrito, conforme descrito em Operadores pós-fixados.

Exemplos

Estes exemplos ilustram declarações de matrizes:

float matrix[10][15];

A matriz bidimensional nomeada matrix tem 150 elementos, cada um deles com o tipo float.

struct {
    float x, y;
} complex[100];

Este exemplo é uma declaração de uma matriz de estruturas. Essa matriz tem 100 elementos; cada elemento é uma estrutura que contém dois membros.

extern char *name[];

Essa instrução declara o tipo e o nome de uma matriz de ponteiros para char. A definição real de name ocorre em outro lugar.

Seção específica da Microsoft

O tipo de inteiro necessário para manter o tamanho máximo de uma matriz é o tamanho de size_t.

Fim da seção específica da Microsoft

Confira também

Declaradores e declarações de variável