Introducción
En la programación en C, una matriz de punteros es una matriz en la que cada elemento es un puntero a otro tipo de datos, como int, char, float, etc. En este laboratorio, aprenderemos cómo acceder a una matriz de punteros a enteros y una matriz de punteros a caracteres.
Matriz de Punteros a Enteros
En este paso, accederemos a una matriz de punteros a enteros. Abra el archivo main.c en el directorio ~/project/ y pegue el siguiente código:
#include <stdio.h>
// Declaración global.
const int MAX = 5;
int main() {
printf("\n\n\t\t==== Matriz de punteros a enteros ====\n\n\n");
int var[] = {10, 20, 30, 40, 50}; // inicializando una matriz (aquí var) de punteros a int
int i = 0;
/*
ptr es una matriz de punteros a int, es decir,
almacena la dirección de cada elemento de la matriz
*/
int *ptr[MAX];
for(i = 0; i < MAX; i++) {
/*
Asigne la dirección de cada elemento de la matriz
al array ptr
*/
ptr[i] = &var[i];
}
for(i = 0; i < MAX; i++) {
/*
ptr[i] almacena la dirección del elemento var[i].
Por lo tanto, *ptr[i] devuelve el valor del elemento
almacenado en la ubicación ptr[i]
*/
printf("Valor de var[%d] = %i\n\n", i, *ptr[i]);
}
printf("\n\n\t\t==== Fin del programa ====\n\n\n");
return 0;
}
Este programa inicializa una matriz de punteros a enteros y asigna la dirección de cada elemento de la matriz al array de punteros. Luego, imprime el valor de cada elemento utilizando el array de punteros.
Matriz de Punteros a Caracteres
En este paso, accederemos a una matriz de punteros a caracteres. Pegue el siguiente código después del código del paso anterior:
#include <stdio.h>
// Declaración global.
const int MAX = 4;
int main() {
printf("\n\n\t\t==== Matriz de punteros a caracteres ====\n\n\n");
char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // inicializando una matriz (aquí names) de punteros a char
int i = 0;
for(i = 0; i < MAX; i++) {
printf("Valor de names[%d] = %s\n\n", i, names[i]);
}
printf("\n\n\t\t==== Fin del programa ====\n\n\n");
return 0;
}
Este programa inicializa una matriz de punteros a caracteres y asigna la dirección del primer carácter de cada cadena al array de punteros. Luego, imprime el nombre completo de cada elemento utilizando el array de punteros.
Compilar y ejecutar el programa
En este paso, compilaremos y ejecutaremos el programa. Abra la terminal y vaya al directorio ~/project/. Escriba el siguiente comando para compilar el programa:
gcc main.c -o main
Después de una compilación exitosa, escriba el siguiente comando para ejecutar el programa:
./main
Este comando ejecutará el programa y mostrará la salida en la terminal:
==== Matriz de punteros a enteros ====
Valor de var[0] = 10
Valor de var[1] = 20
Valor de var[2] = 30
Valor de var[3] = 40
Valor de var[4] = 50
==== Matriz de punteros a caracteres ====
Valor de names[0] = Google
Valor de names[1] = Amazon
Valor de names[2] = Facebook
Valor de names[3] = Apple
==== Fin del programa ====
Código Completo
#include <stdio.h>
// Declaración global.
const int MAX = 5;
int main() {
printf("\n\n\t\t==== Matriz de punteros a enteros ====\n\n\n");
int var[] = {10, 20, 30, 40, 50}; // inicializando una matriz (aquí var) de punteros a int
int i = 0;
/*
ptr es una matriz de punteros a int, es decir,
almacena la dirección de cada elemento de la matriz
*/
int *ptr[MAX];
for(i = 0; i < MAX; i++) {
/*
Asigne la dirección de cada elemento de la matriz
al array ptr
*/
ptr[i] = &var[i];
}
for(i = 0; i < MAX; i++) {
/*
ptr[i] almacena la dirección del elemento var[i].
Por lo tanto, *ptr[i] devuelve el valor del elemento
almacenado en la ubicación ptr[i]
*/
printf("Valor de var[%d] = %i\n\n", i, *ptr[i]);
}
printf("\n\n\t\t==== Matriz de punteros a caracteres ====\n\n\n");
char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // inicializando una matriz (aquí names) de punteros a char
i = 0;
for(i = 0; i < MAX; i++) {
printf("Valor de names[%d] = %s\n\n", i, names[i]);
}
printf("\n\n\t\t==== Fin del programa ====\n\n\n");
return 0;
}
Resumen
En este laboratorio, hemos aprendido cómo acceder a una matriz de punteros a enteros y una matriz de punteros a caracteres. Una matriz de punteros es una matriz en la que cada elemento es un puntero a otro tipo de datos. Hemos aprendido cómo inicializar una matriz de punteros, cómo asignar las direcciones de los elementos de una matriz a una matriz de punteros y cómo acceder a los elementos de la matriz utilizando la matriz de punteros.



