C Arreglo de punteros

C 指针Punteros en C

Un arreglo de punteros es un arreglo en el que cada elemento es un puntero a algún tipo de dato.

Un arreglo de punteros almacena un conjunto de punteros, cada puntero puede apuntar a diferentes objetos de datos.

Los arreglos de punteros se utilizan generalmente para manejar múltiples objetos de datos, como arreglos de cadenas u arreglos de otras estructuras de datos complejas.

Veamos un ejemplo que utiliza un arreglo compuesto por 3 enteros:

Ejemplo

#include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i; for (i = 0; i < MAX; i++) { printf("Value of var[%d] = %d\n", i, var[i] ); } return 0; }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

Puede haber un caso en el que queramos que un arreglo almacene punteros a int, char u otros tipos de datos.

A continuación se muestra una declaración de un arreglo de punteros a enteros:

int *ptr[MAX];

Aquí, septrdeclara como un arreglo compuesto por MAX punteros a enteros. Por lo tanto, cada elemento en ptr es un puntero a un valor int. El siguiente ejemplo utiliza tres enteros, que se almacenarán en un arreglo de punteros, como se muestra a continuación:

Ejemplo

#include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr[MAX]; for ( i = 0; i < MAX; i++) { ptr[i] = &var[i]; /*Asigna la dirección de un entero*/ } for ( i = 0; i < MAX; i++) { printf("Value of var[%d] = %d\n", i, *ptr[i] ); } return 0; }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

También puede usar un arreglo de punteros a caracteres para almacenar una lista de cadenas, como sigue:

Ejemplo

#include <stdio.h> const int MAX = 4; int main () { const char *names[] = { "Zara Ali", "Hina Ali", "Nuha Ali", "Sara Ali", }; int i = 0; for ( i = 0; i < MAX; i++) { printf("Value of names[%d] = %s\n", i, names[i] ); } return 0; }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali

Veamos otro ejemplo sencillo: primero declaramos un arreglo de punteros ptrArray que contiene tres punteros a enteros, luego hacemos que estos punteros apunten a diferentes variables enteras num1, num2 y num3, y finalmente usamos el arreglo de punteros para acceder a los valores de estas variables enteras.

Ejemplo

#include <stdio.h> int main() { int num1 = 10, num2 = 20, num3 = 30; // Declara un arreglo de punteros a enteros, que contiene tres punteros int *ptrArray[3]; // Apunta los punteros a diferentes variables enteras ptrArray[0] = &num1; ptrArray[1] = &num2; ptrArray[2] = &num3; // Usa el arreglo de punteros para acceder a los valores de estas variables enteras printf("Value at index 0: %d\n", *ptrArray[0]); printf("Value at index 1: %d\n", *ptrArray[1]); printf("Value at index 2: %d\n", *ptrArray[2]); return 0; }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

Value at index 0: 10
Value at index 1: 20
Value at index 2: 30

Los arreglos de punteros son muy útiles en C, especialmente al manejar estructuras de datos con un número variable de elementos, como arreglos de cadenas asignados dinámicamente o arreglos de estructuras creados dinámicamente.

C 指针Punteros en C

Otras extensiones