¿Cómo construir una matriz de punteros en la programación c

Una matriz de punteros sería una matriz que contiene las posiciones de memoria. Dicha construcción es a menudo necesaria en el lenguaje de programación C. Recuerde que una matriz de punteros es realmente una matriz de cadenas, se muestra en locas Pointer matrices. Eso hace más fácil la digestión tema.

MATRICES LOCO PUNTERO

#include int main () {char * fruta [] = {"sandía","plátano","Pera","manzana","Coco","uva","arándano"} -INT x-para (x = 0-XLT; 7-x ++) puts (fruta [x]) - retorno (0) -}

Una matriz de punteros se declara en locas Pointer matrices. Funciona de manera similar a una matriz de cadenas, aunque en esta construcción no es necesario contar específicamente longitudes de cadena individuales. Eso es porque la matriz es realmente una matriz de punteros, o posiciones de memoria. Cada cadena habita en algún lugar de la memoria. La matriz simplemente lista donde comienza cada uno.

Video: 91. Programación en C++ || Punteros || Matriz dinámica

Ejercicio 1: Escriba el código fuente de locos Pointer matrices en su editor. Generar y ejecutar confirmar que funciona.

¿Qué parte de matrices loco Pointer cree usted que se podría mejorar?

ejercicio 2: Utilizando la información de abajo como guía, reemplace la notación de matriz, en la línea 17 en locas Pointer matrices con la notación puntero.

Matriz de alfa []Puntero un
alfa [0]*un
alfa [1]* (A + 1)
alfa [2]* (A + 2)
alpha [3]* (A + 3)
alfa[norte]* (A +norte)

La razón de que su solución al ejercicio 2 obras (suponiendo que lo tienes correcta) es que la matriz de la fruta contiene punteros. El valor de cada elemento es otro puntero. Pero eso es nada-considerar Punteros-a-Punteros Ejemplo.

Ejemplo PUNTEROS-A-Indicadores

#include int main () {char * fruta [] = {"sandía","plátano","Pera","manzana","Coco","uva","arándano"} -INT x-para (x = 0-XLT; 7-x ++) {putchar (** (fruta + x)) - putchar ( `n`) -} de retorno (0) -}

La línea 18 en Punteros-a-Punteros ejemplo contiene la temida, temido, evitado, y maldito ** notación, o Doble puntero notación.

Ejercicio 3: escribir con cuidado el código fuente de punteros a punteros Ejemplo en el editor. Compilar y ejecutar.

Para entender la ** (fruta + x) construir, se debe trabajar desde adentro hacia afuera:

fruta + x

Variable Fruta contiene una dirección de memoria. Es un puntero! La x es un valor de incremento en una unidad. En este caso, la unidad es una dirección porque todos los elementos de la Fruta array son punteros.

* (Fruta + x)

Usted ha visto la construcción anterior también. Es el contenido de la dirección de la fruta + x. A partir del código, Fruta es una matriz de punteros. Así, el resultado de la operación anterior es. . . un puntero!

Video: 89. Programación en C++ || Punteros || Ejercicio - Ordenar elementos de un arreglo con punteros

** (fruta + x)

Por último, se obtiene un puntero a un puntero o - poner mejor - un peeker a un peeker. Si el peeker interior es una dirección de memoria, el peeker exterior (el primer asterisco) es el contenido de esa dirección de memoria.

Video: Bloque 5.3: Vectores con punteros y Ejemplo

Es útil recordar que el operador ** es casi siempre (pero no exclusivamente) ligado a una serie de pointers- o, si se quiere que sea sencillo, para una matriz de cadenas. La primera columna es la dirección de una matriz de punteros, la segunda columna es el puntero en sí (una cadena), y la columna de la derecha es el primer carácter de la cadena.

Si todavía estás confundido, considere darle vueltas a la notación de puntero y notación de matriz:

La notación de punteronotación de matrizDescripción
** ptr*formación[]Declara una matriz de punteros.
* ptrarray [0]La dirección del primer puntero en la Expandido para una cadena
matriz, la primera cadena.
* (Ptr + 0)array [0]Lo mismo que la entrada anterior.
** ptrarray [0] [0]El primer elemento de la primera puntero en la Expandido la primera
carácter de la primera cadena de la matriz.
** (ptr + 1)array [1] [0]El primer elemento del segundo puntero en la Expandido la primera
carácter de la segunda cadena.
* (* (Ptr + 1))array [1] [0]Lo mismo que la entrada anterior.
* (* (Ptr + a) + b)array [a] [b]B elemento de puntero un.
** (ptr + a) + barray [a] [0] + bEsto no es tema&rsquo-t realmente lo que quiere. Lo que este artículo
representa es el valor de elemento de 0 a puntero un además de la
valor de la variable segundo. Utilizar el * (* (PTR + a) + b) la notación
en lugar.

En la tabla, la notación de puntero (mediante la variable ptr) Se compara con la notación de matriz equivalente (mediante la variable formación).

Ejercicio 4: Reelaborar el código fuente del ejercicio 3 para que se muestre cada carácter individual en una cadena, una a la vez, mediante el uso de la función putchar (). Si usted puede escribir toda la operación putchar () como condición de un bucle while, que realmente entiende el material.

Artículos Relacionados