Trabajo Punteros - Victor Henriquez
Trabajo Punteros - Victor Henriquez
Punteros
Profesor: Estudiante:
CI. 26.499.927
El C++ nos permite controlar casi todos los aspectos de la ocupación y gestión de
memoria de nuestros programas (sabemos lo que ocupan las variables, podemos trabajar
con direcciones, etc.).
Para definir y declarar se escribe el tipo de puntero luego un asterisco seguido del
nombre que le asignaremos a la variable del puntero:
- Entero:
int *puntero
- Carácter:
char *puntero
- Dato estructurado:
Ntipo *puntero
• Declaración (*):
El valor que puede adquirir un puntero es, por ejemplo, la dirección de una
Variable. El operador “&” devuelve la dirección de una variable:
puntero = &variable
int *ptr;
...
ptr = &i;
• Asignación (=):
int *ptr;
...
ptr = 0x1F3CE00A;
...
ptr = NULL;
char c;
char *ptr;
...
ptr = &c;
- Otro puntero del mismo tipo:
char c;
char *ptr1;
char *ptr2;
ptr1 = &c;
ptr2 = ptr1;
Como todas las variables, los punteros también contienen “basura” cuando se
declaran, por lo que es una buena costumbre inicializarlos con NULL.
Para sumar dos números usando punteros se accede con punteros al valor
guardado en las direcciones de ambas variables y se suman:
6. ¿Cómo modificamos en datos de una variable de tipo entero y de tipo carácter de forma
indirecta?
1 4 7
2 5 8
3 6 9
En el caso de arreglo de caracteres se hace el mismo procedimiento, pero la
dirección mostrada no será la típica como con los enteros.
a b c
Arreglo bidimensional de caracteres
h j o
c f e
s a d
8. ¿Cómo accedemos a los campos de un registro usando punteros? Indique un ejemplo.
Para acceder a los campos de un registro por medio de un puntero se debe crear un puntero
del mismo tipo que el registro que apunte a la dirección del registro la cual se toma
automáticamente como la dirección del primer campo del registro.
La programación dinámica
La memoria dinámica
Por cierto, no debemos eliminar un puntero ya vaciado, podría pasar cualquier cosa
en la memoria y dejar nuestro programa inservible:
En resumen:
12. Para qué sirven los comandos “new” y “delete”, como y donde se utilizan, indique
ejemplo.
delete v;
Sólo liberamos la memoria ocupada por el primer elemento del vector, no la de los
10 elementos.
En caso de que se produzca un error al asignar memoria con new, se genera una
llamada a la función apuntada por:
void f() {
...
...
void main () {
...
_new_handler = f;
...