Arreglos de punterosArreglos de punteros NO es lo mismo que puntero a arreglos.Son arreglos en los que cada uno de sus elementos es un puntero.Cada uno de los punteros puede apuntar a cualquier ubicación en memoria que pueda ser tratada como entero.int *px[5];int x;px[0] = &x;*px[0] = 10;cout << x; //10En este caso, px[0] lo estamos haciendo que apuntea la dirección donde se encuentra x.pxxpx[1]px[2]px[3]px[4]px[0]10Memoria
Ejemplo 1Desarrollar un programa que contenga 5 cadenas de caracteres las cuales hay que ordenar de forma manual e imprimir en pantalla utilizando un arreglo de punteros.
Punteros a punterosPara especificar que una variable es un puntero a un puntero, la sintaxis utilizada es la siguiente:tipo **varpp;int a, *p, **p;a = 10;p = &a;pp = &p;appp10&a&pMemoria
Ejemplo 2Desarrollar un programa que: Utilice 3 arreglos de enteros de distintos tamaños.Manejar estos arreglos como si estuvieran almacenados en direcciones consecutivas, es decir, a través de un arreglo de punteros.Controlar este arreglo de punteros usando un puntero a puntero. Imprimir (mostrar en pantalla) el contenido de los 3 arreglos de enteros, aplicando aritmética de punteros sobre el puntero a puntero.
Asignación dinámica de la memoriaC++ cuenta con dos métodos para almacenar información en la memoria:Variables globales y localesDe forma dinámicaLa asignación dinámica de memoria consiste en asignar la cantidad de memoria necesaria para almacenar un objeto durante la ejecución del programa, en vez de hacerlo en el momento de la compilación del mismo.
Cuando asignamos memoria de forma dinámica para un objeto de un tipo cualquiera, se devuelve un puntero a la zona de memoria asignada.Se debe declarar un puntero a un tipo de dato igual al tipo del objeto que se quiere asignar dinámicamente.
Operadores de asignación dinámica de memoriaEjemplos:
Ejemplo 3Desarrollar un programa que genere un arreglo en forma dinámica con la instrucción new.
Ejemplo 4Desarrollar un programa que:Solicite al usuario la cantidad de cadenas de caracteres que quiere ingresar.Las cadenas de caracteres (máximo 20 caracteres por cadena) se deben de crear dinámicamente y agregarse a un arreglo de punteros.El arreglo de punteros se debe de controlar por un puntero de punteros.Se deben de ordenar las cadenas e imprimir el resultado.Manejar excepciones para controlar la asignación dinámica de memoria.

Arreglo de punteros

  • 1.
    Arreglos de punterosArreglosde punteros NO es lo mismo que puntero a arreglos.Son arreglos en los que cada uno de sus elementos es un puntero.Cada uno de los punteros puede apuntar a cualquier ubicación en memoria que pueda ser tratada como entero.int *px[5];int x;px[0] = &x;*px[0] = 10;cout << x; //10En este caso, px[0] lo estamos haciendo que apuntea la dirección donde se encuentra x.pxxpx[1]px[2]px[3]px[4]px[0]10Memoria
  • 2.
    Ejemplo 1Desarrollar unprograma que contenga 5 cadenas de caracteres las cuales hay que ordenar de forma manual e imprimir en pantalla utilizando un arreglo de punteros.
  • 3.
    Punteros a punterosParaespecificar que una variable es un puntero a un puntero, la sintaxis utilizada es la siguiente:tipo **varpp;int a, *p, **p;a = 10;p = &a;pp = &p;appp10&a&pMemoria
  • 4.
    Ejemplo 2Desarrollar unprograma que: Utilice 3 arreglos de enteros de distintos tamaños.Manejar estos arreglos como si estuvieran almacenados en direcciones consecutivas, es decir, a través de un arreglo de punteros.Controlar este arreglo de punteros usando un puntero a puntero. Imprimir (mostrar en pantalla) el contenido de los 3 arreglos de enteros, aplicando aritmética de punteros sobre el puntero a puntero.
  • 5.
    Asignación dinámica dela memoriaC++ cuenta con dos métodos para almacenar información en la memoria:Variables globales y localesDe forma dinámicaLa asignación dinámica de memoria consiste en asignar la cantidad de memoria necesaria para almacenar un objeto durante la ejecución del programa, en vez de hacerlo en el momento de la compilación del mismo.
  • 6.
    Cuando asignamos memoriade forma dinámica para un objeto de un tipo cualquiera, se devuelve un puntero a la zona de memoria asignada.Se debe declarar un puntero a un tipo de dato igual al tipo del objeto que se quiere asignar dinámicamente.
  • 7.
    Operadores de asignacióndinámica de memoriaEjemplos:
  • 8.
    Ejemplo 3Desarrollar unprograma que genere un arreglo en forma dinámica con la instrucción new.
  • 9.
    Ejemplo 4Desarrollar unprograma que:Solicite al usuario la cantidad de cadenas de caracteres que quiere ingresar.Las cadenas de caracteres (máximo 20 caracteres por cadena) se deben de crear dinámicamente y agregarse a un arreglo de punteros.El arreglo de punteros se debe de controlar por un puntero de punteros.Se deben de ordenar las cadenas e imprimir el resultado.Manejar excepciones para controlar la asignación dinámica de memoria.