Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una expresión de sufijo seguida de una expresión en corchetes ([]) es una representación subscripted de un elemento de un objeto de matriz.Una expresión suscrita representa el valor en la dirección que es posiciones de expresión más allá de la sufijo-expresión cuando se expresada como
postfix-expression [ expression ]
Normalmente, el valor representado por la sufijo-expresión es un valor de puntero, como un identificador de matriz, y la expresión es un valor entero.Sin embargo, todo lo que necesita sintácticamente es que una de las expresiones es de tipo de puntero y el otro es de tipo entero.Así el valor entero podría estar en la posición de la sufijo-expresión y el valor del puntero puede ser en corchetes en la expresión, o “subíndice,” posición.Por ejemplo, este código es válida:
// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
ptr = a;
sum = 4[ptr];
}
Las expresiones suscritas se utilizan normalmente para hacer referencia a los elementos de matriz, pero puede aplicar un subíndice a cualquier puntero.Aquello que el orden de valores, expresión se debe incluir entre corchetes ([]).
La expresión suscrita es evaluada agregando el valor entero al valor de puntero, entonces se aplica el operador de direccionamiento indirecto (*) al resultado.(Vea Direccionamiento indirecto y dirección de Operators para una descripción del operador de direccionamiento indirecto.) De hecho, en una matriz unidimensional, las cuatro expresiones siguientes son equivalentes, suponiendo que a es un puntero y b es un entero:
a[b]
*(a + b)
*(b + a)
b[a]
Según las reglas de conversión para el operador de suma (especificado en operadores aditivos), el valor entero se convierte en un desplazamiento de dirección multiplicándolo por la longitud del tipo alocución el puntero.
Por ejemplo, suponga que el identificador line hace referencia a una matriz de valores de int .el procedimiento siguiente se utiliza para evaluar la expresión suscrita line[ i ]:
El valor entero i se multiplica por el número de bytes definido como la longitud de un elemento de int .el valor convertido de i representa las posiciones de iint .
Este valor convertido se agrega al valor del puntero original (line) para producir una dirección que sea posiciones compensadas de iint de line.
Aplicar el operador de direccionamiento indirecto a la nueva dirección.El resultado es el valor del elemento de matriz en esa posición (intuitivo, line [ i ]).
La expresión suscrita line[0] representa el valor del primer elemento de la línea, ya que el desplazamiento de dirección representada por line es 0.De igual forma, una expresión como line[5] hace referencia a las posiciones de desplazamiento cinco de elementos de línea, o el sexto elemento de matriz.