Partilhar 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 dos elementos da matriz.

Sintaxe

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

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

init-declarator:
declarator
declarator = initializer

declarator:
pointer opte pordirect-declarator

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

Por constant-expression ser opcional, a sintaxe tem duas formas:

  • O primeiro formulário define uma variável de matriz. O constant-expression argumento entre colchetes especifica o número de elementos na matriz. O constant-expression, se presente, deve ter tipo integral e um valor maior que zero. Cada elemento tem o tipo dado 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. Omite o constant-expression argumento entre parênteses, mas não entre parênteses. Você pode usar este formulário somente se tiver inicializado anteriormente a matriz, declarado como um parâmetro ou declarado como uma referência a uma matriz explicitamente definida em outro lugar do programa.

Em ambas as formas, 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 matriz em si.

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 parênteses 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 explicitamente definida em outro lugar do programa.

Você pode definir matrizes de ponteiros para vários tipos de objetos usando declaradores complexos, conforme descrito em Interpretando declaradores mais complexos.

As matrizes são armazenadas por linha. Por exemplo, a matriz a seguir 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 Postfix.

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. Esta 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 para char. A própria definição 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.

END Específico da Microsoft

Ver também

Declaradores e declarações variáveis