Académique Documents
Professionnel Documents
Culture Documents
ACTIVIDAD:
U6-01 Investigación
NOMBRE (S):
ASIGNATURA:
Algoritmos y programación
GRADO Y GRUPO:
1B2
CARRERA:
Ingeniería Mecánica
FACILITADOR:
ING. JULISSA ANDREA ALQUISIRIS SIBAJA
1. Apuntadores a variables.
2. Apuntadores a funciones.
Si el apuntador es a una variable, entonces el apuntador almacena la dirección en
memoria de dicha variable. Si el apuntador es a una función, entonces el apuntador
almacena la dirección en memoria del inicio del código de dicha función. Por ser en
principio más simples, se presentarán primero los apuntadores a variables.
en donde:
Las líneas 11, 12 y 13 inicializan a la variable a con 40178, y a aPtr y bPtr con
la dirección en memoria de a. El operador "&" obtiene la dirección en memoria del
operando (variable) asociado(a), y se conoce como el operador de dirección.
Una variable de tipo apuntador, al ser una variable cuyo contenido es la dirección
en memoria de otra variable, almacena direcciones de memoria obtenidas por el
operador de dirección (el único valor que puede asignarse directamente a una
variable de tipo apuntador es el 0, denotando así que el apuntador no hace
referencia a nada, es decir, que no apunta a ninguna dirección válida de memoria
en cuyo caso se dice que es un apuntador nulo), y aunque en principio es posible
asignarle a un apuntador un valor específico, esto generará, con toda seguridad una
violación de memoria y el programa será terminado por la mayoría de sistemas
operativos (ningún sistema operativo debería permitir la intromisión en áreas de
memoria que no sean las propias del programa, ya que ésto incurriría en graves
errores de seguridad). Las figuras anteriores (a) y (b) ilustran lo que ocurre en las
líneas 11-13. Las funciones printf de las líneas 15 y 16 contienen el especificador
de formato "%p" (pointer), el cual permite visualizar en la salida estándar direcciones
de memoria. Note cómo la dirección de memoria que se imprime en estas líneas es
la misma, tal y como lo muestra la siguiente figura:
Esto haría que se pase el argumento por valor, pero que no se permita la
modificación de la variable original. Si al código anterior le agregasemos la palabra
const en el prototipo y en la declaración, e intentasemos compilarlo generaríamos
un error, ya que el compilador nos avisa que no se puede modificar el valor al que
apunta la referencia, lo cual es muy útil para detectar errores. El código quedaría
así y pueden probarlo:
//Paso por referencia constante.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void elevarCuadrado (const int &); //prototipo de funcion que recibe una referencia
a un int
int main()
{
int x = 0; //Declaracio e inicializacion en 0.
cout << "Ingrese x para elevarlo al cuadrado" << endl;
cin >> x;
cout << "antes de elevarse es " << x <<endl;
elevarCuadrado(x); //Notar que la llamada no es diferente a un paso por valor.
cout << "x despues de elevarse es " << x << endl;
return 0;
}
void elevarCuadrado (const int &y ) //funcion que no devuelve nada (void) y recibe
una referencia a un int en este caso (x)
{
y = y*y; // Error no se puede modificar ya que es constante.
}
Aviso del compilador:
C++
Esto se hace a través del
Operador ‘&’, aplicado a la variable a la cual se desea saber su dirección. Nótese
que se trata de un operador
Unario. Ejemplo:
Este código imprime un valor del estilo “
0x4fffd34
”. Este valor puede variar durante cada ejecución del
Programa, debido a que el programa puede reservar distintos espacios de memoria
durante cada ejecución.
DECLARACION DE APUNTADORES
ASIGNACION DE APUNTADORES
Se pueden asignar a un apuntador direcciones de variables a través del operador
de referenciación (‘&’) o direcciones almacenadas en otros apuntadores. Ejemplos:
CONCLUSION
Despuer de haber investigado sobre este tema “apuntadores” muy importantes para
la creación de algoritmos y la programación en sí, plateamos 5 puntos muy
importantes a tomar en cuenta antes de programar que son los siguientes:
Los apuntadores son una gran ayuda para referenciar variables.
Su uso es demasiado delicado.
Un apuntador siempre referenciar direcciones.
Un doble apuntador es "una referencia de otra referencia".
Los tipos de datos de apuntador y variable apuntada deben coincidir.
Y con esto damos por terminada la investigación de este tema.