Compartilhar via


Matrizes unidimensionais

Uma expressão postfix seguido por uma expressão entre colchetes ([]) é uma representação subscrito de um elemento de um objeto array.Uma expressão de Subscrita representa o valor no endereço que está expressão posiciona além postfix-expressão quando expresso como

postfix-expression [ expression ]

Normalmente, o valor representado por postfix-expressão é um valor de ponteiro, como, por exemplo, um identificador de matriz, e expressão é um valor inteiro.No entanto, tudo isso é necessário sintaticamente é que uma das expressões ser do tipo de ponteiro e o outro ser do tipo integral.Portanto, o valor integral poderia ser o postfix-expressão posição e o valor do ponteiro podem estar em colchetes do expressão, ou a posição de "Subscrita".Por exemplo, este código é legal:

// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
   ptr = a;
   sum = 4[ptr];
}

Subscritos expressões são geralmente usadas para se referir a elementos de matriz, mas você pode aplicar um subscrito a qualquer ponteiro.Qualquer que seja a ordem de valores, expressão deve ser colocado entre colchetes ([]).

A expressão de Subscrita é avaliada adicionando o valor integral para o valor do ponteiro, em seguida, aplicando o operador de indireção (*) para o resultado.(Consulte indireção e operadores adress-of para uma discussão sobre o operador de indireção.) Na verdade, para uma matriz unidimensional, quatro expressões a seguir são equivalentes, assumindo que a é um ponteiro e b é um número inteiro:

a[b]
*(a + b)
*(b + a)
b[a]

De acordo com para as regras de conversão para o operador de adição (apresentado na Operadores aditivos), o valor integral é convertido para um endereço de deslocamento multiplicando-lo pelo comprimento do tipo endereçado pelo ponteiro.

Por exemplo, suponha que o identificador line refere-se a uma matriz de int valores.O procedimento a seguir é usado para avaliar a expressão de Subscrita line[ i ]:

  1. O valor inteiro i é multiplicado pelo número de bytes definido como o comprimento de uma int item.O valor convertido de i representa iint posições. 

  2. Esse valor convertido é adicionado ao valor do ponteiro original (line) para gerar um endereço que é compensado iint posiciona de line. 

  3. O operador de indireção será aplicado ao novo endereço.O resultado é o valor do elemento da matriz nessa posição (intuitivamente, line [ i ]).

A expressão de Subscrita line[0] representa o valor do primeiro elemento de linha, desde o deslocamento do endereço representado por line é 0.Da mesma forma, uma expressão como line[5] refere-se ao elemento deslocamento cinco posições de linha ou o sexto elemento da matriz.

Consulte também

Referência

Operador subscrito:]