Compartilhar via


Declarações de matriz

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

Sintaxe

declaration:
declaration-specifiers init-declarator-list optar;

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

init-declarator:
declarator
declarator = initializer

declarator:
pointer optardirect-declarator

direct-declarator:
direct-declarator [ constant-expression optar]

Como constant-expression é opcional, a sintaxe tem dois formulários:

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

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

Em ambos os formulários, direct-declarator nomeia a variável e pode modificar o tipo da variável. Os colchetes ([ ]) a seguir direct-declarator modificam o declarador para um tipo de matriz.

Os qualificadores de tipo podem aparecer na declaração de um objeto de tipo de matriz, mas os qualificadores se aplicam aos elementos em vez da própria matriz.

Você pode declarar uma matriz de matrizes (uma matriz "multidimensional") seguindo o declarador de matriz com uma lista de expressões constantes entre colchetes neste formulário:

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

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

Você pode definir matrizes de ponteiros para vários tipos de objetos usando declaradores complexos, conforme descrito na interpretação de 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 rapidamente.

Para se referir a um elemento individual de uma matriz, use uma expressão subscrita, conforme descrito em Operadores postfixos.

Exemplos

Estes exemplos ilustram declarações de matriz:

float matrix[10][15];

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

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[];

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

Específico 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

Consulte também

Declaradores e declarações de variável