Apuntadores
Apuntadores
Apuntadores
resultado = raiz_cuadrada(x);
if (es_primo(x))
Tipo
int edad[5]
Identificador Tamaño
Declaración y acceso a Arreglos Unidimensionales
Declaración y acceso a Arreglos Unidimensionales
Declaración y acceso a Arreglos Unidimensionales
Elementos
Indices
Nombre del arreglo
Declaración y acceso a Arreglos Unidimensionales
Ejercicio 2
Programa en C que permite ingresar una matriz de
orden 3x3 desde la consola y almacenarlo en un
arreglo bidimensional, luego presentar sus
elementos
DEFINICION
COLUMNAS
FILAS
Ejercicio 3
programa en C que permita ingresar una matriz de
orden 3x3, almacenarlo en un arreglo. Todos los
elementos que se encuentran bajo la diagonal
principal almacenarlos en un arreglo unidimensional
y sumarlos
3 2 5
4 6 6
7 8 9
a
3 2 5
4 6 6
7 8 9
3 2 5
4 6 6
7 8 9
Apuntadores
Concepto:
“Un puntero es un tipo de dato simple que
contiene la dirección de una variable o
estructura”
Apuntador Variable
dirección valor
using namespace s t d ;
i n t main(){
i n t n = 75;
i n t *p = &n; / / c o n t i e n e l a dirección de l a v a r i a b l e n
cout << "n = " << n << " ,&n = " << &n << " , p = " << p << e n d l ;
cout << "&p = " << &p << e n d l ;
system("pause");
return 0;
}
Análisis del ejemplo
La variable “p” se denomina “puntero” debido a
que si valor “apunta” a la posición de otra
variable.
Es un puntero “int” cuando el valor al que apunta
es de tipo “int” como el del ejemplo anterior
Declaración de apuntadores
<tipo_de_dato_apuntador> *<nombre_apuntador>;
ejemplos:
*p = 50;
Inicialización del apuntador
Cuando ya se ha definido un apuntador, el
asterisco adelante de la variable apuntador
indica “el contenido” de la memoria apuntada
por el apuntador y será del tipo dado.
Este tipo de inicialización es estática, ya que
la asignación de memoria utilizada para
almacenar el valor es fijo y no puede
desaparecer.
Una vez que la variable se define, el
compilador establece suficiente memoria para
almacenar un valor del tipo de dato dado.
La memoria permanece reservada para esta
variable y no se puede utilizar para otra cosa
durante la ejecución del programa (no se
puede liberar la memoria reservada para una
variable)
using namespace s t d ;
char c ; / / v a r i a b l e caract er
i n t main(){
char * p c ; //apuntador a una v a r i a b l e caracter
pc = &c;
f o r ( c = ' A ' ; c <= ' Z ' ; c++)
cout << *pc <<endl;
system("pause");
re1t6urn 0
La ejecución de este programa visualiza
el alfabeto.
La variable puntero pc es un apuntador a
una variable carácter.
La línea pc = &c; asigna a pc la dirección
de la variable c (&c)
El bucle for almacena en c las letras del
alfabeto y la sentencia cout << *pc; visualiza el
contenido de la variable aputada por pc.
c y pc se refieren a la misma posición en
memoria, de modo que el cambio de una
variable debe afectar a la otra.
• Operaciones permitidas
– Unapuntador puedeserasignadoaotro
– Es posiblesumarorestarunapuntador conunentero
– Es posiblerestarocomparardos apuntadores
– Noesposiblerealizarningunaoperación entredos
apuntadores
Declarar punteros
p 10
1638212
Declarar punteros - ejercicio
n
p 10
Listas enlazadas
Una lista enlazada es una colección o
secuencia de elementos dispuestos uno
detrás de otro, en la que cada elemento se
conecta al siguiente elemento mediante un
“enlace”.
Puntero
1245874
Ejemplo – Declaración de una lista enlazada
Ejemplo – Enlazar nodos
Reservar memoria
Asignación a campos
n
1638212 10 NULL
Insertar elementos en unalista
• En la cabeza
• Al final de la lista
• En la lista
– Antes de un elemento especificado
– Después de un elemento especificad.
Ejercicio 4
• Programa que permite crear una lista enlazada de
elementos que almacenen datos de tipo entero.
Luego presentar los elementos de la lista enlazada.
5 3 5 null
Declaración estructura
5 3 8
Insertar en la cabeza de unalista
Lista enlazada
12 16 4 NULL
cabeza
3
nuevo
cabeza
3
nuevo
Insertar en la cabeza de unalista
cabeza = nuevo
cabeza 3 12 16 4 NULL
nuevo
Elemento insertado
3 12 16 4 NULL
cabeza