QT Capitulo 04
QT Capitulo 04
QT Capitulo 04
CAPITULO IV
I. CONTENIDO
Temas Habilidades
Al finalizar el capítulo, el alumno podrá:
• Punteros Dinámicos • Aplicación de punteros
• Estructura de datos • Definir estructuras de datos
•
Los punteros son variables que se utilizan para almacenar direcciones de memoria que
fueron asignadas a variables en las que se almacenan datos de distinto tipo.
Cada uno de los espacios de memoria cuenta con una dirección para identificarlo, esta
dirección es por lo general un número en representación hexadecimal.
Una vector o matriz es una estructura de datos formada por un conjunto de elementos
del mismo tipo; en la definición de estas estrructuras de datos se debe de indicar el
tamaño o número de elementos que van a contener, haciendo constante el tamaño de
estas estructuras.
Capitulo IV Pág. 1
Programación C++ con las Librerías QT sobre entorno linux
➢ VECTORES DINAMICOS, por medio de los punteros podemos crear arreglos o
vectores dinámicos, es decir, un array al cual se le define su tamaño o capacidad
durante la ejecución del código y no antes, lo cual nos permite definirle el tamaño
deseado por el usuario.
Los operadores que se deben de usar son el new y delete, el operador new sirve para
reservar memoria dinámica, mientras que el operador delete se usa para liberar la
memoria dinámica reservada con new.
La memoria del computador se divide en sectores, cada sector tiene un uso particular,
de dicha división de la memoria podemos indicar:
✓ Stack (pila), es el sector donde se crean todas las variables y funciones que
están definidas antes de la compilación del programa y tiene un ámbito de
ejecución local. La gestión de este espacio de memoria la hace el sistema
operativo.
Capitulo IV Pág. 2
Programación C++ con las Librerías QT sobre entorno linux
✓ Head (monton), es el sector donde se crean las variables que se crean en
memoria en tiempo de ejecución. El tamaño de este segmento no está
predefinido, va variando. Crece hacia a arriba, en el mismo sentido que las
direcciones de memoria.
✓ Data, sección que almacena las variables globales incializadas en el programa.
✓ Text, sección donde se almacen todas las instrucciones en código de maquina
que componen el programa que se está ejecutando.
El espacio de memoria que hemos reservado con new tendrá vida hasta que finalize la
ejecución del programa o cuando liberemos ese espacio con delete. Estas variables
dinámicas se crean en el espacio de memoria llamada head.
int *p;
int dim;
➢ MATRICES DINAMICOS, para crear una matriz dinámica debemos de crear un doble
puntero y usamos al igual que los vectores el operador new para reservar memoria y
delete para liberar. Primero tenemos que crear el vector que contendrá a otros
vectores especificando el numero de vectores que tendra este vector principal.
Para crear un arreglo bidimensional el asunto no es tan simple como lo fue para el
arreglo de una dimensión (vectores), ya que lo siguiente no es permitido.
int m, n;
Capitulo IV Pág. 3
Programación C++ con las Librerías QT sobre entorno linux
cin >> m >> n;
int *arreglo = new int[m][n]; // ¡tampoco funciona!
La matriz del diagrama anterior la podemos ver como una matriz de 3 filas por 3
columnas. El asunto es que tanto los arreglos con los elementos como el arreglo de
punteros van a existir en memoria dinámica, por lo que hay que solicitar la memoria
respectiva.
Capitulo IV Pág. 4
Programación C++ con las Librerías QT sobre entorno linux
int m, n;
cin >> m >> n;
int **arreglo = new int*[m];
for (int i = 0; i < m; i++) {
arreglo[i] = new int[n];
}
Capitulo IV Pág. 5
Programación C++ con las Librerías QT sobre entorno linux
III. ESTRUCTURAS DE DATOS
Anteriormente se había visto que una matriz es un conjunto de elemento de igual tipo.
Una estructura es un conjunto de elementos de distinto tipo.
struct inventario {
int nro;
int edad;
float talla;
};
Aquí se ha definido un tipo de dato de usuario compuesto por datos de distinto tipo. Las
variables del tipo definido se pueden declarar de la misma manera que otras variables y
a sus miembros componentes (en este caso, número, edad y talla) se puede acceder de
la siguiente manera:
inventario p3;
p3.nro = 12 // se usa el punto para referirnos
// a un miembro de la estructura
p3.edad = 28;
p3.talla = 1.80;
Otro ejemplo de tipo compuesto es la clase string. Las variables de este tipo pueden
lmacenar secuencias de caracteres, como palabras u oraciones.
Una primera diferencia con los tipos de datos fundamentales es que para declarar y
utilizar objetos (variables) de este tipo, el programa debe incluir el encabezado donde
se define el tipo dentro de la biblioteca estándar (encabezado <string>):
#include <iostream>
#include <string>
using namespace std;
int main ()
{
String stCadena;
Capitulo IV Pág. 6
Programación C++ con las Librerías QT sobre entorno linux
mystring = "Es una cadena";
cout << stCadena;
return 0;
}
IV. LABORATORIO N° 1
Capitulo IV Pág. 7