Vinculación de punteros con arrays y recorrido hacia adelante
En este paso, estableceremos la conexión entre nuestro puntero y el array, y luego utilizaremos el puntero para recorrer el array en dirección hacia adelante.
Conectar un puntero a un array
En C, el nombre de un array sin un índice representa la dirección del primer elemento del array. Esto significa que podemos asignar directamente esta dirección a una variable puntero.
Modifiquemos nuestro archivo main.c
para vincular el puntero con el array y recorrerlo:
#include <stdio.h>
int main() {
printf("Array Traversal using Pointers\n\n");
// Declare and initialize an array of 5 integers
int arr[5] = {10, 20, 30, 40, 50};
// Declare a pointer of integer type
int *ptr;
// Assign the address of the first element of the array to the pointer
ptr = arr; // This is equivalent to ptr = &arr[0]
// Print the array elements using array notation
printf("Array elements using array notation:\n");
for(int i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}
// Print the array elements using pointer notation
printf("\nArray elements using pointer notation (forward traversal):\n");
for(int i = 0; i < 5; i++) {
printf("*(ptr + %d) = %d\n", i, *(ptr + i));
}
return 0;
}
En este código actualizado:
- Asignamos la dirección del primer elemento del array
arr
al puntero ptr
.
- Añadimos un nuevo bucle que recorre el array utilizando aritmética de punteros.
- La expresión
*(ptr + i)
accede al valor en la ubicación de memoria ptr + i
. Cuando i
es 0, este es el primer elemento del array; cuando i
es 1, es el segundo elemento, y así sucesivamente.
Compila y ejecuta el programa para ver los resultados:
gcc main.c -o main
./main
Deberías ver la siguiente salida:
Array Traversal using Pointers
Array elements using array notation:
arr[0] = 10
arr[1] = 20
arr[2] = 30
arr[3] = 40
arr[4] = 50
Array elements using pointer notation (forward traversal):
*(ptr + 0) = 10
*(ptr + 1) = 20
*(ptr + 2) = 30
*(ptr + 3) = 40
*(ptr + 4) = 50
Observa que ambos métodos producen la misma salida. Esto demuestra que la aritmética de punteros se puede utilizar para acceder a los elementos de un array al igual que el índice de array tradicional.