Una array bidimensional de punteros es una array que tiene variables de tipo puntero. Esto significa que las variables almacenadas en la array 2D son tales que cada variable apunta a una dirección particular de algún otro elemento.
Cómo crear una array 2D de punteros:
Se puede crear una array 2D de punteros siguiendo la forma que se muestra a continuación.
int *array[5][5]; //crear una array de punteros enteros 2D de 5 filas y 5 columnas.
El elemento de la array 2D se inicializa asignando la dirección de algún otro elemento.
En el ejemplo, hemos asignado la dirección de la variable entera ‘n’ en el índice (0, 0) de la array 2D de punteros.
int n; //declarada una variable
arr[0][0] = &n; //asignado una variable en la posición (0, 0)
A continuación se muestra la implementación de la array 2D de punteros.
C
#include <stdio.h> // Drivers code int main() { int arr1[5][5] = { { 0, 1, 2, 3, 4 }, { 2, 3, 4, 5, 6 }, { 4, 5, 6, 7, 8 }, { 5, 4, 3, 2, 6 }, { 2, 5, 4, 3, 1 } }; int* arr2[5][5]; // Initialising each element of the // pointer array with the address of // element present in the other array for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { arr2[i][j] = &arr1[i][j]; } } // Printing the array using // the array of pointers printf("The values are\n"); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { printf("%d ", *arr2[i][j]); } printf("\n"); } return 0; }
The values are 0 1 2 3 4 2 3 4 5 6 4 5 6 7 8 5 4 3 2 6 2 5 4 3 1
También se puede crear una array bidimensional de punteros mediante la asignación dinámica de memoria.
Podemos usar la función malloc() para asignar memoria dinámicamente.
ptr = (cast-type*) malloc(byte-size)
A continuación se muestra la implementación de una array 2D de punteros utilizando la asignación de memoria dinámica.
C
#include <stdio.h> #include <stdlib.h> // Drivers code int main() { int arr1[5][5] = { { 0, 1, 2, 3, 4 }, { 2, 3, 4, 5, 6 }, { 4, 5, 6, 7, 8 }, { 5, 4, 3, 2, 6 }, { 2, 5, 4, 3, 1 } }; // Creating 2D array of pointers using Dynamic Memory // allocation through malloc() function int*** arr2 = malloc(5 * sizeof(int**)); for (int i = 0; i < 5; i++) arr2[i] = malloc(5 * sizeof(int*)); // Initialising each element of the // pointer array with the address of // element present in the other array for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { arr2[i][j] = &arr1[i][j]; } } // Printing the array using // the array of pointers printf("The values are\n"); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { printf("%d ", *arr2[i][j]); } printf("\n"); } return 0; }
Producción:
The values are 0 1 2 3 4 2 3 4 5 6 4 5 6 7 8 5 4 3 2 6 2 5 4 3 1
Publicación traducida automáticamente
Artículo escrito por soumyadeeppaul022 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA