¿Cómo funciona exactamente la indexación en Arrays?

Primero, entendamos las arrays , es una colección de elementos almacenados en ubicaciones de memoria contiguas. La idea básica es almacenar varios elementos del mismo tipo juntos a los que se puede acceder por índice/clave (un número).

La memoria contigua del tamaño declarado se asigna en montón/pila y luego la dirección del elemento se calcula matemáticamente durante el tiempo de ejecución como:

dirección del elemento = (dirección base) + (índice del elemento * tamaño de un solo elemento)

dónde,

  • Dirección base: Es la dirección del elemento en el índice 0 o la ubicación del primer elemento de la array en la memoria. El compilador conoce esta dirección como la ubicación de memoria de la array.
  • Índice de elemento: es el número secuencial (índice/clave) asignado al elemento donde se asigna 0 al primer elemento de la array. También se puede definir como el número de elementos anteriores a ese elemento en particular en la array.
  • Tamaño de un solo elemento: los elementos de la array deben ser del mismo tipo de datos u objeto. El tamaño de un solo elemento es el número de bytes requeridos en la memoria para almacenar un solo elemento de ese tipo.

Por ejemplo:

El tipo int requiere 4 bytes (32 bits) , el tipo
char requiere un tipo
largo de 1 byte (8 bits) , requiere 8 bytes (64 bits), etc.

Ejemplo de implementación anterior:

int arr[6] = {3, 4, 7, 9, 7, 1}
dirección de arr[0] ( dirección base ) = 0 x 61fe00 
dirección de arr[3] ( dirección del elemento ) =  (dirección base) + ( índice de elemento * tamaño de un solo elemento)
0 x 61fe00 + ( 3 * 4) = 0 x 61fe0c
Aquí, el tamaño de un solo elemento es de 4 bytes, ya que es una array de tipo int.

long long arr[6]={100, 12, 123, 899,124, 849}
dirección de arr[0] ( dirección base ) = 0x61fdf0
dirección de arr[3] ( dirección del elemento ) =  (dirección base) + (índice del elemento * tamaño de un solo elemento)
0x61fdf0 + ( 3 * 8) = 0x61fe08
Aquí, el tamaño de un solo elemento es de 8 bytes, ya que es una array de tipo largo.

Nota: Aquí las direcciones están en formato hexadecimal.

Veamos su implementación a través de un programa para imprimir la dirección de los elementos del arreglo:

C++

// Program to show how indexing works
#include <iostream>
  
using namespace std;
  
int main() {
    int arr[6] = {3,4,7,9,7,1};
    cout << "Base address:- " << (&arr) << endl;
    cout << "Element address at index 3:- " << (&arr[3]) << endl;
    return 0;
}
Producción

Base address:- 0x7ffc64918c30
Element address at index 3:- 0x7ffc64918c3c

Publicación traducida automáticamente

Artículo escrito por sachin801 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *