SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Material de apoyo Programación
Avanzada
Otra introducción a apuntadores
Definición
 Cada vez que se declara una variable C++ el
compilador establece un área de memoria para
almacenar el contenido de una variable.
 El espacio para esa variable se sitúa en una
posición específica de la memoria, conocida
como “dirección de memoria”
 Cuando se referencia o hace uso de la variable,
el compilador de C++ accede automáticamente a
la dirección de memoria asignada a dicha
variable
 Se puede ganar en eficacia en el acceso a esta
dirección de memoria utilizando un puntero o
apuntador.
30/09/20152 Mtl Lourdes Cahuich
 Cada variable que se declara en C++ se tiene
una dirección de memoria asociada a ella.
 Un puntero o apuntador almacena una dirección
de memoria.
 Una analogía es cuando se envía un correo, su
contenido se entrega con base en la dirección a
donde se dirige dicho correo.
 Otra analogía es una llamada telefónica, el
número de teléfono apunta hacia dónde
encontrar a la persona con quien queremos
hablar.
30/09/20153 Mtl Lourdes Cahuich
 Un apuntador en C++ también indica dónde
encontrar algo.
 Un puntero C++ es la dirección de una variable.
30/09/20154 Mtl Lourdes Cahuich
Reglas básicas
 Un puntero es una variable como cualquier otra
 Un apuntador o puntero contiene una dirección
que apunta a otra posición en memoria
 En esa posición se almacenan los datos a los
que apunta el puntero
 Un apuntador o puntero “apunta” a una dirección
de memoria
30/09/20155 Mtl Lourdes Cahuich
75
p
n
El valor de un apuntador es una
dirección.
La dirección depende del estado de
la computadora en el cuál se ejecuta
el programa
30/09/20156 Mtl Lourdes Cahuich
Ejemplo
#include <iostream>
using namespace std;
int main(){
int n = 75;
int *p = &n; //contiene la dirección de la variable n
cout << "n = " << n << " ,&n = " << &n << " , p = " << p <<
endl;
cout << "&p = " << &p << endl;
system("pause");
return 0;
}
30/09/20157 Mtl Lourdes Cahuich
30/09/20158 Mtl Lourdes Cahuich
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
30/09/20159 Mtl Lourdes Cahuich
Declaración de apuntadores
<tipo_de_dato_apuntador> *<nombre_apuntador>;
ejemplos:
int *ptr1; //apuntador a tipo de dato entero (int)
long *ptr2;
char *ptr3;
float *f;
--Siempre que aparezca un * en la declaración de una
variable, ésta es una variable apuntador--
30/09/201510 Mtl Lourdes Cahuich
Inicialización de punteros
 La inicialización de un apuntador proporciona a
ese apuntador la dirección del dato
correspondiente.
 Después de la inicialización se puede utilizar el
puntero para diferenciar los datos direccionados.
(Es como si te dieran una dirección de un
domicilio y además te dieran la llave para entrar a
ver qué hay en dicho domicilio)
 Asignar un valor a la dirección de memoria:
*p = 50;
30/09/201511 Mtl Lourdes Cahuich
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.
30/09/201512 Mtl Lourdes Cahuich
 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)
 Existe un segundo método para inicializar un
apuntador, mediante la asignación dinámica de
memoria. Este método utiliza operadores new y
delete, y lo veremos más adelante.
30/09/201513 Mtl Lourdes Cahuich
Indirección de apuntadores
 Después de definir una variable apuntador, el
siguiente paso es inicializar el puntero y utilizarlo
para direccionar algún dato específico en
memoria.
 El uso de un puntero para obtener el valor al que
apunta, es decir, su dato apuntado, se denomina
“indirección del puntero”
 Para ello se utiliza el operador de indirección *
30/09/201514 Mtl Lourdes Cahuich
Indirección (continuación)
30/09/201515 Mtl Lourdes Cahuich
Ejemplo de crear, inicializar e
indireccionar un apuntador
#include <iostream>
using namespace std;
char c; //variable caracter
int main(){
char *pc; //apuntador a una variable caracter
pc = &c;
for (c = 'A'; c <= 'Z'; c++)
cout << *pc <<endl;
system("pause");
return 0;
}
30/09/201516 Mtl Lourdes Cahuich
30/09/201517 Mtl Lourdes Cahuich
 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.
30/09/201518 Mtl Lourdes Cahuich
30/09/201519 Mtl Lourdes Cahuich
30/09/201520 Mtl Lourdes Cahuich
Algunos códigos de ejemplo
30/09/2015Mtl Lourdes Cahuich21
 Escribe un programa en C++ en donde declares
dos variables flotantes y les asignes valores
diferentes a cada una
 Declara una variable apuntador de tipo flotante.
 Guarda en la variable apuntador la dirección de
la primera variable flotante que declaraste
 Imprime en pantalla el contenido de la dirección
de memoria que tiene guardada la variable
apuntador
 Ahora en la variable apuntador guarda la
dirección de memoria de la segunda variable
flotante que declaraste
 Imprime en pantalla el contenido de la dirección
de memoria que tiene guardada la variable
30/09/2015Mtl Lourdes Cahuich22
#include <iostream.h>
int main()
{
float v1 = 756.423;
float v2 = 900.545;
float *p_v;
p_v = &v1;
cout << "El primer valor es" << *p_v << endl;
//se imprime 756.423
p_v = &v2;
cout << "El segundo valor es" << *p_v << endl;
//se imprime 900.545;
return 0;
}
Descubre qué realizan los
siguientes códigos
Escribe los siguientes códigos en tu computadora y
descubre su uso.
Crea un programa y en la función “main” haz uso de la
siguiente función ( el código está en varias diapositivas)
30/09/2015Mtl Lourdes Cahuich23
30/09/2015Mtl Lourdes Cahuich24
void OperadoresAritmeticos(void){
int x = 10, y = 2, z[3], *p;
p = NULL;
cout << "nvalores iniciales variablesn";
cout << "x = " << x << "n";
cout << "y = " << y << "n";
cout << "p = " << p << "n";
// cout << "*p" << *p << "n";
// cout << "&p" << &p << "n";
cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " <<
&z[2] << "n";
30/09/2015Mtl Lourdes Cahuich25
p = &z[2];
cout << "nvalores de variables despues de p = &z[2]n";
cout << "x = " << x << "n";
cout << "y = " << y << "n";
cout << "p = " << p << "n";
cout << "*p = " << *p << "n";
cout << "&p = " << &p << "n";
cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " << &z[2] <<
"n";
30/09/2015Mtl Lourdes Cahuich26
*p = *p + 2;
cout << "nvalores de variables despues de *p = *p + 2;n";
cout << "x = " << x << "n";
cout << "y = " << y << "n";
cout << "p = " << p << "n";
cout << "*p = " << *p << "n";
cout << "&p = " << &p << "n";
cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " << &z[2] <<
"n";
30/09/2015Mtl Lourdes Cahuich27
p++;
cout << "nvalores de variables despues de p++n";
cout << "x = " << x << "n";
cout << "y = " << y << "n";
cout << "p = " << p << "n";
cout << "*p = " << *p << "n";
cout << "&p = " << &p << "n";
cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " << &z[2] << "n";
}
¿Qué es lo que hace el
procedimiento anterior?
30/09/2015Mtl Lourdes Cahuich28

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Recursividad
RecursividadRecursividad
Recursividad
 
Punteros y funciones
Punteros y funciones Punteros y funciones
Punteros y funciones
 
Programación 1: arreglos en C
Programación 1: arreglos en CProgramación 1: arreglos en C
Programación 1: arreglos en C
 
Problem solving methodology
Problem solving methodologyProblem solving methodology
Problem solving methodology
 
Análisis de complejidad big o
Análisis de complejidad  big o Análisis de complejidad  big o
Análisis de complejidad big o
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
Clasificación de los Lenguajes de Programación
Clasificación de los Lenguajes de ProgramaciónClasificación de los Lenguajes de Programación
Clasificación de los Lenguajes de Programación
 
Presentacion PseudocóDigo
Presentacion PseudocóDigoPresentacion PseudocóDigo
Presentacion PseudocóDigo
 
Ciclos C++
Ciclos C++Ciclos C++
Ciclos C++
 
Definición de punteros en C++ en Introducción a la Programación
Definición de punteros en C++ en Introducción a la ProgramaciónDefinición de punteros en C++ en Introducción a la Programación
Definición de punteros en C++ en Introducción a la Programación
 
C Programming Unit-1
C Programming Unit-1C Programming Unit-1
C Programming Unit-1
 
Estructura switch case
Estructura switch caseEstructura switch case
Estructura switch case
 
TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++
 
Diseño de un codificador decimal bcd
Diseño de un codificador decimal bcdDiseño de un codificador decimal bcd
Diseño de un codificador decimal bcd
 
Variables in C Programming
Variables in C ProgrammingVariables in C Programming
Variables in C Programming
 
Recursividad
RecursividadRecursividad
Recursividad
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++
 
Estructura basica para c++
Estructura basica para c++Estructura basica para c++
Estructura basica para c++
 
Analisis y diseño de algoritmos
Analisis y diseño de algoritmosAnalisis y diseño de algoritmos
Analisis y diseño de algoritmos
 

Andere mochten auch

Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoUVM
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreUVM
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++UVM
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bitsUVM
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funcionesUVM
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datosUVM
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicosUVM
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funcionesUVM
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadoresUVM
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlUVM
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3UVM
 
Función main()
Función main()Función main()
Función main()UVM
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++UVM
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuarioUVM
 

Andere mochten auch (14)

Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agosto
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembre
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bits
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datos
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicos
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funciones
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadores
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3
 
Función main()
Función main()Función main()
Función main()
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 

Ähnlich wie Otra introducción a apuntadores

4 Administracion De Memoria
4 Administracion De Memoria4 Administracion De Memoria
4 Administracion De MemoriaUVM
 
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4hassanbadredun
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamientoSergio Ramos
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
 
Curva de daño de un transformador c++
Curva de daño de un transformador c++Curva de daño de un transformador c++
Curva de daño de un transformador c++Marco Jiménez
 
19 Contenedores De Stl Basados En Arboles
19 Contenedores De Stl Basados En Arboles19 Contenedores De Stl Basados En Arboles
19 Contenedores De Stl Basados En ArbolesUVM
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
Apuntadores
ApuntadoresApuntadores
Apuntadoresluisabn
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Mery_Angie_Ugalde
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CPablo Chiesa
 
Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punterosKareliaRivas
 
Administración de memoria y apuntadores
Administración de memoria y apuntadoresAdministración de memoria y apuntadores
Administración de memoria y apuntadoresFranklin Chavez
 

Ähnlich wie Otra introducción a apuntadores (20)

Tema 1.1
Tema 1.1Tema 1.1
Tema 1.1
 
4 Administracion De Memoria
4 Administracion De Memoria4 Administracion De Memoria
4 Administracion De Memoria
 
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Apunfun1
Apunfun1Apunfun1
Apunfun1
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Curva de daño de un transformador c++
Curva de daño de un transformador c++Curva de daño de un transformador c++
Curva de daño de un transformador c++
 
19 Contenedores De Stl Basados En Arboles
19 Contenedores De Stl Basados En Arboles19 Contenedores De Stl Basados En Arboles
19 Contenedores De Stl Basados En Arboles
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
Java básico
Java  básicoJava  básico
Java básico
 
Lenguaje c neo
Lenguaje c neoLenguaje c neo
Lenguaje c neo
 
Apunfun1
Apunfun1Apunfun1
Apunfun1
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez
 
Cesar lenguaje c_
Cesar lenguaje c_Cesar lenguaje c_
Cesar lenguaje c_
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en C
 
Curso de pl sql básico
Curso de pl sql básicoCurso de pl sql básico
Curso de pl sql básico
 
Estructuras dinámicas de datos
Estructuras dinámicas de datosEstructuras dinámicas de datos
Estructuras dinámicas de datos
 
Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punteros
 
Administración de memoria y apuntadores
Administración de memoria y apuntadoresAdministración de memoria y apuntadores
Administración de memoria y apuntadores
 

Mehr von UVM

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programaciónUVM
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaUVM
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempoUVM
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosUVM
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglosUVM
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#UVM
 
Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición UVM
 
Repaso previo a 2º examen parcial
Repaso previo a 2º examen parcialRepaso previo a 2º examen parcial
Repaso previo a 2º examen parcialUVM
 
Polimorfismo
PolimorfismoPolimorfismo
PolimorfismoUVM
 
Namespaces y C#
Namespaces y C#Namespaces y C#
Namespaces y C#UVM
 
Tipos de herencia
Tipos de herenciaTipos de herencia
Tipos de herenciaUVM
 
Herencia 1ª parte
Herencia 1ª parteHerencia 1ª parte
Herencia 1ª parteUVM
 
Agregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repeticiónAgregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repeticiónUVM
 
Agregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decisionAgregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decisionUVM
 
Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15UVM
 
Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#UVM
 

Mehr von UVM (16)

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programación
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación Avanzada
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempo
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicos
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglos
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#
 
Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición
 
Repaso previo a 2º examen parcial
Repaso previo a 2º examen parcialRepaso previo a 2º examen parcial
Repaso previo a 2º examen parcial
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Namespaces y C#
Namespaces y C#Namespaces y C#
Namespaces y C#
 
Tipos de herencia
Tipos de herenciaTipos de herencia
Tipos de herencia
 
Herencia 1ª parte
Herencia 1ª parteHerencia 1ª parte
Herencia 1ª parte
 
Agregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repeticiónAgregando comportamiento al objeto – estructuras de repetición
Agregando comportamiento al objeto – estructuras de repetición
 
Agregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decisionAgregando comportamiento al objeto – estructuras de decision
Agregando comportamiento al objeto – estructuras de decision
 
Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15Presentación de proyectos semestrales 01-15
Presentación de proyectos semestrales 01-15
 
Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#
 

Kürzlich hochgeladen

Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdfValeriaCorrea29
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdfMiguelHuaman31
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 

Kürzlich hochgeladen (20)

Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 

Otra introducción a apuntadores

  • 1. Material de apoyo Programación Avanzada Otra introducción a apuntadores
  • 2. Definición  Cada vez que se declara una variable C++ el compilador establece un área de memoria para almacenar el contenido de una variable.  El espacio para esa variable se sitúa en una posición específica de la memoria, conocida como “dirección de memoria”  Cuando se referencia o hace uso de la variable, el compilador de C++ accede automáticamente a la dirección de memoria asignada a dicha variable  Se puede ganar en eficacia en el acceso a esta dirección de memoria utilizando un puntero o apuntador. 30/09/20152 Mtl Lourdes Cahuich
  • 3.  Cada variable que se declara en C++ se tiene una dirección de memoria asociada a ella.  Un puntero o apuntador almacena una dirección de memoria.  Una analogía es cuando se envía un correo, su contenido se entrega con base en la dirección a donde se dirige dicho correo.  Otra analogía es una llamada telefónica, el número de teléfono apunta hacia dónde encontrar a la persona con quien queremos hablar. 30/09/20153 Mtl Lourdes Cahuich
  • 4.  Un apuntador en C++ también indica dónde encontrar algo.  Un puntero C++ es la dirección de una variable. 30/09/20154 Mtl Lourdes Cahuich
  • 5. Reglas básicas  Un puntero es una variable como cualquier otra  Un apuntador o puntero contiene una dirección que apunta a otra posición en memoria  En esa posición se almacenan los datos a los que apunta el puntero  Un apuntador o puntero “apunta” a una dirección de memoria 30/09/20155 Mtl Lourdes Cahuich
  • 6. 75 p n El valor de un apuntador es una dirección. La dirección depende del estado de la computadora en el cuál se ejecuta el programa 30/09/20156 Mtl Lourdes Cahuich
  • 7. Ejemplo #include <iostream> using namespace std; int main(){ int n = 75; int *p = &n; //contiene la dirección de la variable n cout << "n = " << n << " ,&n = " << &n << " , p = " << p << endl; cout << "&p = " << &p << endl; system("pause"); return 0; } 30/09/20157 Mtl Lourdes Cahuich
  • 9. 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 30/09/20159 Mtl Lourdes Cahuich
  • 10. Declaración de apuntadores <tipo_de_dato_apuntador> *<nombre_apuntador>; ejemplos: int *ptr1; //apuntador a tipo de dato entero (int) long *ptr2; char *ptr3; float *f; --Siempre que aparezca un * en la declaración de una variable, ésta es una variable apuntador-- 30/09/201510 Mtl Lourdes Cahuich
  • 11. Inicialización de punteros  La inicialización de un apuntador proporciona a ese apuntador la dirección del dato correspondiente.  Después de la inicialización se puede utilizar el puntero para diferenciar los datos direccionados. (Es como si te dieran una dirección de un domicilio y además te dieran la llave para entrar a ver qué hay en dicho domicilio)  Asignar un valor a la dirección de memoria: *p = 50; 30/09/201511 Mtl Lourdes Cahuich
  • 12. 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. 30/09/201512 Mtl Lourdes Cahuich
  • 13.  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)  Existe un segundo método para inicializar un apuntador, mediante la asignación dinámica de memoria. Este método utiliza operadores new y delete, y lo veremos más adelante. 30/09/201513 Mtl Lourdes Cahuich
  • 14. Indirección de apuntadores  Después de definir una variable apuntador, el siguiente paso es inicializar el puntero y utilizarlo para direccionar algún dato específico en memoria.  El uso de un puntero para obtener el valor al que apunta, es decir, su dato apuntado, se denomina “indirección del puntero”  Para ello se utiliza el operador de indirección * 30/09/201514 Mtl Lourdes Cahuich
  • 16. Ejemplo de crear, inicializar e indireccionar un apuntador #include <iostream> using namespace std; char c; //variable caracter int main(){ char *pc; //apuntador a una variable caracter pc = &c; for (c = 'A'; c <= 'Z'; c++) cout << *pc <<endl; system("pause"); return 0; } 30/09/201516 Mtl Lourdes Cahuich
  • 18.  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. 30/09/201518 Mtl Lourdes Cahuich
  • 21. Algunos códigos de ejemplo 30/09/2015Mtl Lourdes Cahuich21  Escribe un programa en C++ en donde declares dos variables flotantes y les asignes valores diferentes a cada una  Declara una variable apuntador de tipo flotante.  Guarda en la variable apuntador la dirección de la primera variable flotante que declaraste  Imprime en pantalla el contenido de la dirección de memoria que tiene guardada la variable apuntador  Ahora en la variable apuntador guarda la dirección de memoria de la segunda variable flotante que declaraste  Imprime en pantalla el contenido de la dirección de memoria que tiene guardada la variable
  • 22. 30/09/2015Mtl Lourdes Cahuich22 #include <iostream.h> int main() { float v1 = 756.423; float v2 = 900.545; float *p_v; p_v = &v1; cout << "El primer valor es" << *p_v << endl; //se imprime 756.423 p_v = &v2; cout << "El segundo valor es" << *p_v << endl; //se imprime 900.545; return 0; }
  • 23. Descubre qué realizan los siguientes códigos Escribe los siguientes códigos en tu computadora y descubre su uso. Crea un programa y en la función “main” haz uso de la siguiente función ( el código está en varias diapositivas) 30/09/2015Mtl Lourdes Cahuich23
  • 24. 30/09/2015Mtl Lourdes Cahuich24 void OperadoresAritmeticos(void){ int x = 10, y = 2, z[3], *p; p = NULL; cout << "nvalores iniciales variablesn"; cout << "x = " << x << "n"; cout << "y = " << y << "n"; cout << "p = " << p << "n"; // cout << "*p" << *p << "n"; // cout << "&p" << &p << "n"; cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " << &z[2] << "n";
  • 25. 30/09/2015Mtl Lourdes Cahuich25 p = &z[2]; cout << "nvalores de variables despues de p = &z[2]n"; cout << "x = " << x << "n"; cout << "y = " << y << "n"; cout << "p = " << p << "n"; cout << "*p = " << *p << "n"; cout << "&p = " << &p << "n"; cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " << &z[2] << "n";
  • 26. 30/09/2015Mtl Lourdes Cahuich26 *p = *p + 2; cout << "nvalores de variables despues de *p = *p + 2;n"; cout << "x = " << x << "n"; cout << "y = " << y << "n"; cout << "p = " << p << "n"; cout << "*p = " << *p << "n"; cout << "&p = " << &p << "n"; cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " << &z[2] << "n";
  • 27. 30/09/2015Mtl Lourdes Cahuich27 p++; cout << "nvalores de variables despues de p++n"; cout << "x = " << x << "n"; cout << "y = " << y << "n"; cout << "p = " << p << "n"; cout << "*p = " << *p << "n"; cout << "&p = " << &p << "n"; cout << "&z[0] = " << &z[0] << " &z[1] = " << &z[1] << " &z[2] = " << &z[2] << "n"; }
  • 28. ¿Qué es lo que hace el procedimiento anterior? 30/09/2015Mtl Lourdes Cahuich28