Objetivos•Comprender los apuntadores y los operadores para apuntadores.•Utilizar los apuntadores para pasar por referencia argumentos auna función.•Comprender las relaciones entre apuntadores, arreglos y cadenas.•Comprender el uso de los apuntadores a funciones.•Definir y utilizar los arreglos de cadenas.
Diapositiva 2
Definicion
Los apuntadores son variables cuyos valores son direcciones de memoria.
Diapositiva 3
Caracteristicas
Por lo general, una variable contiene directamente un valor
específico. Por otro lado, un apuntador contiene la dirección de una
variable que contiene un valor específico.
El nombre de una variable hace referencia directa a un valor, yun apuntador hace referencia indirecta un valor.
Diapositiva 4
Aplicacion
Los apuntadores permiten a los
programadores simular las llamadas por referencia, y crear y manipular
estructuras de datos dinámicas, esdecir,
estructuras de datos que pueden crecer y encogerse en tiempo de
ejecución, tales como listas ligadas, colas, pilas y árboles.
Diapositiva 5
Como se declara un puntero
Los apuntadores, como todas las variables, deben definirse antes de que se puedan utilizar. <tipo> *<identificador>;
Diapositiva 6
Paso de un puntero a una funcion
Las estructuras también pueden ser pasadas por valor y por referencia.
Las reglas se les aplican igual que a los tipos fundamentales: las estructuras
pasadas por valor no conservarán sus cambios al retornar de la función.
Las estructuras pasadas por referencia conservarán los cambios que se
les hagan al retornar de la función.
En el caso de las estructuras, los objetos pueden ser muy grandes, ocupando
mucha memoria. Es por eso que es frecuente enviar referencias como parámetros,
aunque no se vayan a modificar los valores de la estructura. Esto evita que
el valor del objeto deba ser depositado en la pila para ser recuperado por
la función posteriormente.
Diapositiva 7
Manejo de punteros y arreglos de una dirección.
En el lenguaje C los punteros y los arrays están estrechamente relacionados. Para facilitar su estudio vamos a diferenciar los casos de arrays unidimensionales (vectores) cadenas de caracteres y arrays multidimensionales.Se pueden utilizar variables puntero que contengan la dirección de un array, lo que posibilita la realización de todas aquellas operaciones permitidas con punteros.
Diapositiva 8
Asisgancion dinamica de memoria
La asignación de memoria consiste en el proceso de asignar memoria para propósitos específicos, ya sea en tiempo de compilación o de ejecución. Si es en tiempo de compilación es estática, si es en tiempo de ejecución es dinámica y si son variables locales a un grupo de sentencias se denomina automática.
Diapositiva 9
Operaciones con punteros
Sumar o restar un número entero a un puntero. Nombre_punter + n = Dirección + n *tamaño_tipo_dato Incremento o decremento de punterosFloat *apunt;Apunt++; Resta de dos punteros.int tabula[10], d;int *ptab1 = &tabula[1];int *ptab2 = &tabula[4];d = ptab1 – ptab2;
Diapositiva 10
Funcion a una Funcion (Aplicacion)
Sintaxis:
<tipo> &<identificador_función>(<lista_parámetros>); También es posible devolver referencias desde una función, para ello
basta con declarar el valor de retorno como una referencia.
Esto nos permite que la llamada a una función se comporte como un objeto, ya
que una referencia se comporta exactamente igual que el objeto al que referencia, y podremos
hacer cosas como usar esa llamada en expresiones de asignación.
Diapositiva 11
Funcion anfitriona
Una función es una secuencia de instrucciones que componen una tarea específica en un algoritmo, es decir, una función es un tipo de subtarea de un programa o subalgoritmo.En C++, no se pueden anidar funciones, es decir, no se puede declarar una función dentro de otra.La sentencia return se usa para devolver la variable de salida. Si no se quiere retornar nada, se especifica el tipo_retorno como void y se prescinde del return.