Punteros

Descrição

Punteros - Ruiz Garcia Luis Fernando
LUIS FERNANDO RUIZ GARCIA
Slides por LUIS FERNANDO RUIZ GARCIA, atualizado more than 1 year ago
LUIS FERNANDO RUIZ GARCIA
Criado por LUIS FERNANDO RUIZ GARCIA quase 9 anos atrás
13
0

Resumo de Recurso

Slide 1

    IntroducciónEl puntero es una técnica muy potente que hace que la programaciónC++ sea tan utilizada. La técnica de punteros apoya a la programaciónorientada a objetos, que es una de las grandes diferencias entre C y C++.Definición: Un puntero es una variable que almacena una dirección dememoria
    PUNTERO

Slide 2

    Permiten simular el paso por referencia, crear y manipular estructuras dinamicas de datos, tales como listas enlazadas, pilas, colas y árboles. Generalmente las variables contienen valores especificos. Los punteros son variables pero en vez de contener un valor especifico, contienen las direcciones de las variables a las que apuntan. Para obtener o modificar el valor de la variable a la que apuntan se utiliza el operador de indirección. Los punteros, al ser variables deben ser declaradas como punteros antes de ser utilizadas.
    Caracteristica:

Slide 3

    Aplicacion
    C++ no inicializa los punteros cuando se declaran y es necesario inicializarlos antes depoder utilizarlos. Para asignar una dirección de memoria a un puntero se utiliza el operadorde referencia (&). Ejemplo: &var1, significa la dirección de la variable var1. Por tal razón lainicialización de un puntero requiere:➢Asignar memoria definiendo una variable➢Declarar un puntero➢Hacer que el puntero apunte a la dirección de la variable.Para asignar un valor a la dirección de memoria a la que apunta el puntero ptr se utiliza el operador sobrecargado (*)

Slide 4

    La declaración de un apuntador debe indicar al compilador el tipo de dato al que apunta,para ello se hace preceder a su identificador con un asterisco (*) como sigue:<Tipo de dato>* <identificador de puntero>;también es perfectamente valido utilizar <Tipo de dato> *<identificador de puntero>;
    Declaración de punteros

Slide 5

    La única diferencia es que el primer caso sugiere que '*' forma parte del tipo de dato', y en elsegundo que '*' forma parte del identificador. Lo recomendable es adoptar la primera forma,ya que la segunda se presta a confundir el operador '*' con el operador de indirección, y esmuy importante comprender que aquí no hay nada de indirección, es solo una declaración deun identificador, ligado a un tipo (<Tipo de dato>*). Es el mensaje del compilador el quenos indica esta ultima interpretación.Ejemplos:in t* ptr1; //Puntero a un tipo de dato entero (int)long* ptr2;//Puntero a un tipo de dato entero largo (long int)char* ptr3;//Puntero a un tipo de dato char float* ptr4;//Puntero a un tipo de dato float

Slide 6

    Puntero a una funcion
    Cuando pasamos un puntero como parámetro de una función por valor pasa lo mismo que con cualquier otro objeto. Dentro de la función trabajamos con una copia del parámetro, que en este caso es un puntero. Por lo tanto, igual que pasaba con el ejemplo anterior, las modificaciones en el valor del parámetro serán locales a la función y no se mantendrán después de retornar. Sin embargo, no sucede lo mismo con el objeto apuntado por el puntero, puesto que en ambos casos será el mismo, ya que tanto el puntero como el parámetro tienen como valor la misma dirección de memoria. Por lo tanto, los cambios que hagamos en los objetos apuntados por el puntero se conservarán al abandonar la función.

Slide 7

    Ejemplo:
    #include <iostream> using namespace std; void funcion(int *q); int main() { int a; int *p; a = 100; p = &a; // Llamamos a funcion con un puntero funcion(p); // (1) cout << "Variable a: " << a << endl; cout << "Variable *p: " << *p << endl; // Llamada a funcion con la dirección de "a" (constante) funcion(&a); // (2)

Slide 8

    Punteros y areglo en una dimension
    Existe una estrecha relación entre apuntadores y arreglos, tanto que pueden ser usados en forma casi indistinta. Una variable de tipo arreglo puede considerarse como un apuntadoral tipo del arreglo. Los apuntadores pueden ser utilizados en cualquier operación que involucre subíndices de arreglos.

Slide 9

                 #include <stdlib.h>              #include <stdio.h>              int main()              {                         int tabla[10],i,x,*pt,*ptr;                         pt = &tabla[0];                         x = *pt;                         for (i=0; i <10; i++)                                 *(pt+i) = rand() % 100;                         ptr = tabla;                         for (i=0; i <10; i++)                                 printf(''%d \n'',*(ptr+i),tabla[i]);                } Cuando se suma 1 a un apuntador el incremento se adecua al tamaño en memoria del objeto apuntado. Un apuntador es una variable, por lo que operaciones como pa = a y pa++ son permitidas.Un nombre de un arreglo es una constante, no una variable, de ahí que a = pa o a++ o p = a.
    Ejemplo relacion apuntadores y arreglos

Slide 10

    Asignacion dinamica de memoria
    Cuando se declara un puntero se reserva memoria para albergar una dirección dememoria, pero NO PARA ALMACENAR EL DATO AL QUE APUNTA EL PUNTERO.El espacio de memoria reservado para almacenar un puntero es el mismo independientemente del tipo de dato al que apunte. La forma de indicar la dirección de una variable, es utilizando el operador &de tipo monario precediendo al nombre de la variable, por tanto, hay que diferenciar en una variable, cuando se está empleando su valor (referenciado por su nombre) o cuando se está empleando su dirección (al preceder su nombre con el símbolo &). Int cant;              Cant = 15; &cant;  /* Indica la dirección de la variable cant*/  Para que una variable puntero apunte a otra variable es necesario asignar la dirección de dicha variable al puntero.

Slide 11

    Operaciones con punteros
    Int a = 5, b, c; Int *p1 =&a, *p2; P2 = p1; B =  *p1; c = *p2; ARITMÉTICA DE PUNTEROS Sumar o restar un número entero a un puntero. Nombre_punter + n = Dirección + n *tamaño_tipo_dato Float num, *punt, *pnum Punt =&num; Pnum =punt + 2 /  * Si se se supone que la dirección contenida en punt es 4274, la dirección que contiene ‘pnum’ es 4274 + 2 * 4 = 4282 * /

Slide 12

    Funciones a otras funciones
    Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código. Cuando una función es invocada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.

Slide 13

    Funcion anfitriona
    La palabra-clave friend es un especificador de acceso.  Se usa para declarar que una función o clase (la denominaremos "invitada"), tiene derecho de acceso a los miembros de la clase en que se declara (denominada "anfitriona"), sin que la clase invitada tenga que ser miembro de la anfitriona. En todos los otros aspectos la invitada es una función o clase normal en lo que se refiere a su declaración, definición y ámbito. Dicho en otras palabras:  friend es un especificador de ámbito que "alarga" el ámbito del invitado (clase o función) al interior de la clase anfitriona  (a todo el interior, incluyendo miembros privados y protegidos ).

Semelhante

Diapositivas de Diseño gráfico, evolución y tendencias
Samantha Molina Vega
Diseño gráfico, evolución y tendencias - APUNTE
escandoncb
Diseño gráfico, evolución y tendencias
Samantha Molina Vega
PRESENTACIÓN EN GOCONR
weownthenigh
Eliminacion de un nodo
LUIS FERNANDO RUIZ GARCIA
test de Diseño gráfico, evolución y tendencias
Samantha Molina Vega
Notación algoritmica
Jenni' Burbujeante
factores culturales que afectan las operaciones de los negocios internacionales
JOHANA HERNANDEZ
EL LIBRO Y SUS PARTES
A14N 3URT0N
Técnicas de recopilación.
onlyhyuk8
Diapositivas de Correcion y edicion de fotografia
efrainska