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