APUNTADORES
UTILIZADOS          EN
PARAMETROS         POR
REFERENCIA, CUANDO UNA
VARIABLE APUNTA A UNA
DIRECCION DE MEMORIA
DE OTRA VARIABLE
PASO DE PARAMETRO POR
       REFERENCIA
O CUANDO UNA FUNCION DEBE MODIFICAR EL
  VALOR   DEL   PARAMETRO    PASADO     Y
  DEVOLVER ESTE VALOR MODIFICADO A LA
  FUNCION LLAMADORA, SE HA DE UTILIZAR EL
  METODO DE PASO DE PARAMETRO POR
  REFERENCIA.
O EN ESTE METODO EL COMPILADOR PASA LA
  DIRECCION DE MEMORIA DEL VALOR DEL
  PARAMETRO A LA FUNCION. CUANDO SE
  MODIFICA EL VALOR DEL PARAMETRO (LA
  VARIABLE LOCAL), ESTE VALOR QUEDA
  ALMACENADO EN LA MISMA DIRECCION DE
  MEMORIA, POR LO QUE AL RETORNAR A LA
  FUNCION LLAMADORA LA DIRECCION DE LA
  MEMORIA DONDE     SE   ALMACENO      EL
  PARAMETRO    CONTENDRA     EL    VALOR
  MODIFICADO.
O VER APUNTADORES.
APUNTADORES
O Definición: Un apuntador es una variable que
    contiene una dirección de memoria.
O   En C y C++ una variable precedida del operador &
    devuelve la dirección y el valor a la variable
    siempre y cuando esta sea declarada como
    variable apuntador.
O   Ejem.
O   Int x;
O   Int *apuntador, z;
O   Observe el ejemplo anterior y vera que la variable
    x es una variable declarada de tipo entero, la
    variable llamada apuntador es una variables de
    tipo apuntador, mas no así la variable z que es una
    variable de tipo entero
Apuntadores
O   De lo anterior tenemos lo siguiente.
O   Int x;
O   Int *apuntador;
O   X=7;
O   Apuntador=&x;
O   Esto queda de la siguiente manera, declaro una
    variable de tipo entero x, una variable llamada
    apuntador de tipo apuntador, después x toma el
    valor de 7 pero al momento de realizar la
    instrucción apuntador=&x; el valor y la dirección de
    x pasa a la variable apuntador, y se expresa como
    que la variable apuntador apunta a la variable x va
    y toma su dirección y su valor.
UTILIZACION DE PUNTEROS
   EN SENTENCIAS SENCILLAS
#include <iostream>
using namespace std;
main()
{
 system(“cls”);
 int a;
 int *apuntador;
 a=7;
 apuntador= &a;
 cout<<"la direccion de a es:n"<<&a<<endl;
 cout<<“la direccion de apuntador es:n"<<apuntador<<endl;
system(“pause”);
 return 0;
}
Así tenemos que imprime la misma dirección en a y en la variable apuntador.
O   #include <iostream>
O   using namespace std;
O    main()
O    {
O     system(“cls”);
O     int a;
O     int *apuntador;
O    cout<<“la direccion de apuntador es:n"<<apuntador<<endl;
O     a=7;
O     apuntador= &a;
O     cout<<"la direccion de a es:n"<<&a<<endl;
O     cout<<“la direccion de apuntador es:n"<<apuntador<<endl;
O    system(“pause”);
O     return 0;
O    }
O   Aquí vemos que la variable apuntador imprime su direccion, real y despues
    imprime la direccion de a y la direccion de apuntador cambia a la misma
    direccion de a ya que apuntador apunto a a y trajo su direccion .
O   #include <iostream>
O   using namespace std;
O    main()
O    {
O     system(“cls”);
O     int a;
O     int *apuntador;
O    cout<<“la direccion de apuntador es:n"<<apuntador<<endl;
O     a=7;
O     apuntador= &a;
O     cout<<"la direccion de a es:n"<<&a<<endl;
O     cout<<“la direccion de apuntador es:n"<<apuntador<<endl;
O   // a partir de las siguientes lineas se imprime el mismo valor de a y de apuntador
O   // note que para imprimir una variable de tipo apuntador esta va precedida del *
O   // tambien debe DE QUEDAR CLARO QUE UNA VARIABLE DE TIPO APUNTADOR POR SI SOLA
O   // NO IMPRIME EL VALOR DE ELLA, SOLO SU DIRECCION E IMPRIME EL VALOR CUANDO ES
O   //PRECEDIDA POR EL * PERO SOLO IMPRIME EL VALOR DE LA VARIABLE A LA CUAL APUNTO
O   cout<<“el valor de a es:n"<<a<<endl;
O   cout<<“el valor de apuntador es:n"<<*apuntador<<endl;
O    system(“pause”);
O     return 0;
O    }
UTILIZACION DE PUNTEROS CON
         FUNCIONES
#include <iostream>
using namespace std;
int cubo (int *);
 int main()
 {
  system(“cls”);
  int numero = 5;
  cout<<"el valor original de numero es:n"<<numero;
  cubo(&numero);
  cout<<"n";
  cout<<"el nuevo valor de numero es:n"<<numero;
  system(„pause`);
  return 0;
  }
  int cubo(int *apuntador)
  {
  return *apuntador=*apuntador * *apuntador * *apuntador;
  }
O   #include <iostream>
O   using namespace std;
O   int cubo (int *);
O    int main()
O    {
O     system("cls");
O     int numero = 5;
O     cout<<"el valor original de numero es:n"<<numero;
O     cubo(&numero);
O     cout<<"n";
O     system("pause");
O     return 0;
O     }
O     int cubo(int *apuntador)
O     {
O     *apuntador=*apuntador * *apuntador * *apuntador;
O     cout<<"el nuevo valor de numero es:n"<<*apuntador;
O     }
#include <iostream>
using namespace std;
int cubo (int *);
 int main()
 {
  system("cls");
   int numero = 5;
  int *apuntador;
  apuntador=&numero;
  cout<<"la direccion de numero es:n"<<&apuntador;
  cout<<"n el valor de numero es:n"<<numero;
  cout<<"el valor de numero es:n"<<*apuntador;
  cout<<"n";
  cubo(&numero);
  cout<<"el nuevo valor de numero es:n"<<numero;
  cout<<"nla direccion nueva de numero es:n"<<*apuntador;
  cout<<"la direccion de numero es:n"<<&apuntador;
  system("pause");
  return 0;

 }
 int cubo(int *apuntador)
 {
 return *apuntador=*apuntador * *apuntador * *apuntador;
 }
O   #include <iostream>
O   using namespace std;
O   int numero;
O   int *apuntador;
O   int cubo (int * );
O    int main()
O    {
O     system("cls");
O
O    numero=5;
O    apuntador=&numero;
O    cout<<"la direccion de numero es:n"<<&apuntador;
O    cout<<"n el valor de numero es:n"<<numero;
O    cout<<"el valor de numero es:n"<<*apuntador;
O    cout<<"n";
O    cubo(&numero);
O
O    system("pause");
O    return 0;

O    }
O    int cubo(int *apuntador )
O    {
O   *apuntador=*apuntador * *apuntador * *apuntador;
O    cout<<"el nuevo valor de numero es:n"<<numero;
O    cout<<"nla direccion nueva de numero es:n"<<*apuntador;
O    cout<<"la direccion de numero es:n"<<&apuntador;
O    }
O   # include "iostream"
O   using namespace std;
O   int a,b,c;
O   int suma(int *);
O   int *apuntador,*apuntador1,*e;
O   int main()
O   {
O
O   system("cls");
O    cout<<"dame a ";
O    cin>>a;
O    cout<<"dame b ";
O    cin>>b;
O    c=a+b;
O     suma(&c);
O     cout<<c;
O      cout<<"n";
O     cout<<*e;
O     cout<<"n";
O     cout<<&c;
O     cout<<"n";
O     cout<<e;
O     cout<<"n";
O     cout<<&e;
O     cout<<"n";
O    system("pause");
O   return 0;
O   }
O
O       int suma (int *)
O       {
O           apuntador=&a;
O           apuntador1 = &b;
O           e = &c;
O           return *e;
O
O
O   }
O   # include "iostream"
O   using namespace std;
O   int a,b,c;
O   int suma(int *);
O   int *apuntador,*apuntador1,*e;
O   int main()
O   {
O
O   system("cls");
O    cout<<"dame a ";
O    cin>>a;
O    cout<<"dame b ";
O    cin>>b;
O    c=a+b;
O     suma(&c);
O
O    system("pause");
O   return 0;
O   }
O
O       int suma (int *)
O       {
O           apuntador=&a;
O           apuntador1 = &b;
O           e = &c;
O           cout<<c;
O        cout<<"n";
O       cout<<*e;
O       cout<<"n";
O       cout<<&c;
O       cout<<"n";
O       cout<<e;
O       cout<<"n";
O       cout<<&e;
O       cout<<"n";
O
O
O   }
DIFERENCIA ENTRE LOS PARAMETROS
   POR VALOR Y POR REFERENCIA
O LOS    PARAMETROS      POR    VALOR
  (DECLARADOS SIN &) RECIBEN COPIAS
  DE LOS VALORES DE LOS ARGUMENTOS
  QUE SE PASAN Y
O LA ASIGNACION A PARAMETROS POR
  VALOR DE UNA FUNCION NUNCA
  CAMBIAN EL VALOR DEL ARGUMENTO
  ORIGINAL PASADO A LOS PARAMETROS.
O LOS PARAMETROS POR REFERENCIA (
  DECLARADOS CON &) RECIBEN LA
  DIRECCION DE LOS ARGUMENTOS
  PASADOS Y
O EN UNA FUNCION, LAS ASIGNACIONES A
  PARAMETROS      POR      REFERENCIA
  CAMBIAN LOS VALORES DE LOS
  ARGUMENTOS ORIGINALES.

Apuntes apuntadores 1 a

  • 1.
    APUNTADORES UTILIZADOS EN PARAMETROS POR REFERENCIA, CUANDO UNA VARIABLE APUNTA A UNA DIRECCION DE MEMORIA DE OTRA VARIABLE
  • 2.
    PASO DE PARAMETROPOR REFERENCIA O CUANDO UNA FUNCION DEBE MODIFICAR EL VALOR DEL PARAMETRO PASADO Y DEVOLVER ESTE VALOR MODIFICADO A LA FUNCION LLAMADORA, SE HA DE UTILIZAR EL METODO DE PASO DE PARAMETRO POR REFERENCIA. O EN ESTE METODO EL COMPILADOR PASA LA DIRECCION DE MEMORIA DEL VALOR DEL PARAMETRO A LA FUNCION. CUANDO SE MODIFICA EL VALOR DEL PARAMETRO (LA VARIABLE LOCAL), ESTE VALOR QUEDA ALMACENADO EN LA MISMA DIRECCION DE MEMORIA, POR LO QUE AL RETORNAR A LA FUNCION LLAMADORA LA DIRECCION DE LA MEMORIA DONDE SE ALMACENO EL PARAMETRO CONTENDRA EL VALOR MODIFICADO. O VER APUNTADORES.
  • 3.
    APUNTADORES O Definición: Unapuntador es una variable que contiene una dirección de memoria. O En C y C++ una variable precedida del operador & devuelve la dirección y el valor a la variable siempre y cuando esta sea declarada como variable apuntador. O Ejem. O Int x; O Int *apuntador, z; O Observe el ejemplo anterior y vera que la variable x es una variable declarada de tipo entero, la variable llamada apuntador es una variables de tipo apuntador, mas no así la variable z que es una variable de tipo entero
  • 4.
    Apuntadores O De lo anterior tenemos lo siguiente. O Int x; O Int *apuntador; O X=7; O Apuntador=&x; O Esto queda de la siguiente manera, declaro una variable de tipo entero x, una variable llamada apuntador de tipo apuntador, después x toma el valor de 7 pero al momento de realizar la instrucción apuntador=&x; el valor y la dirección de x pasa a la variable apuntador, y se expresa como que la variable apuntador apunta a la variable x va y toma su dirección y su valor.
  • 5.
    UTILIZACION DE PUNTEROS EN SENTENCIAS SENCILLAS #include <iostream> using namespace std; main() { system(“cls”); int a; int *apuntador; a=7; apuntador= &a; cout<<"la direccion de a es:n"<<&a<<endl; cout<<“la direccion de apuntador es:n"<<apuntador<<endl; system(“pause”); return 0; } Así tenemos que imprime la misma dirección en a y en la variable apuntador.
  • 6.
    O #include <iostream> O using namespace std; O main() O { O system(“cls”); O int a; O int *apuntador; O cout<<“la direccion de apuntador es:n"<<apuntador<<endl; O a=7; O apuntador= &a; O cout<<"la direccion de a es:n"<<&a<<endl; O cout<<“la direccion de apuntador es:n"<<apuntador<<endl; O system(“pause”); O return 0; O } O Aquí vemos que la variable apuntador imprime su direccion, real y despues imprime la direccion de a y la direccion de apuntador cambia a la misma direccion de a ya que apuntador apunto a a y trajo su direccion .
  • 7.
    O #include <iostream> O using namespace std; O main() O { O system(“cls”); O int a; O int *apuntador; O cout<<“la direccion de apuntador es:n"<<apuntador<<endl; O a=7; O apuntador= &a; O cout<<"la direccion de a es:n"<<&a<<endl; O cout<<“la direccion de apuntador es:n"<<apuntador<<endl; O // a partir de las siguientes lineas se imprime el mismo valor de a y de apuntador O // note que para imprimir una variable de tipo apuntador esta va precedida del * O // tambien debe DE QUEDAR CLARO QUE UNA VARIABLE DE TIPO APUNTADOR POR SI SOLA O // NO IMPRIME EL VALOR DE ELLA, SOLO SU DIRECCION E IMPRIME EL VALOR CUANDO ES O //PRECEDIDA POR EL * PERO SOLO IMPRIME EL VALOR DE LA VARIABLE A LA CUAL APUNTO O cout<<“el valor de a es:n"<<a<<endl; O cout<<“el valor de apuntador es:n"<<*apuntador<<endl; O system(“pause”); O return 0; O }
  • 8.
    UTILIZACION DE PUNTEROSCON FUNCIONES #include <iostream> using namespace std; int cubo (int *); int main() { system(“cls”); int numero = 5; cout<<"el valor original de numero es:n"<<numero; cubo(&numero); cout<<"n"; cout<<"el nuevo valor de numero es:n"<<numero; system(„pause`); return 0; } int cubo(int *apuntador) { return *apuntador=*apuntador * *apuntador * *apuntador; }
  • 9.
    O #include <iostream> O using namespace std; O int cubo (int *); O int main() O { O system("cls"); O int numero = 5; O cout<<"el valor original de numero es:n"<<numero; O cubo(&numero); O cout<<"n"; O system("pause"); O return 0; O } O int cubo(int *apuntador) O { O *apuntador=*apuntador * *apuntador * *apuntador; O cout<<"el nuevo valor de numero es:n"<<*apuntador; O }
  • 10.
    #include <iostream> using namespacestd; int cubo (int *); int main() { system("cls"); int numero = 5; int *apuntador; apuntador=&numero; cout<<"la direccion de numero es:n"<<&apuntador; cout<<"n el valor de numero es:n"<<numero; cout<<"el valor de numero es:n"<<*apuntador; cout<<"n"; cubo(&numero); cout<<"el nuevo valor de numero es:n"<<numero; cout<<"nla direccion nueva de numero es:n"<<*apuntador; cout<<"la direccion de numero es:n"<<&apuntador; system("pause"); return 0; } int cubo(int *apuntador) { return *apuntador=*apuntador * *apuntador * *apuntador; }
  • 11.
    O #include <iostream> O using namespace std; O int numero; O int *apuntador; O int cubo (int * ); O int main() O { O system("cls"); O O numero=5; O apuntador=&numero; O cout<<"la direccion de numero es:n"<<&apuntador; O cout<<"n el valor de numero es:n"<<numero; O cout<<"el valor de numero es:n"<<*apuntador; O cout<<"n"; O cubo(&numero); O O system("pause"); O return 0; O } O int cubo(int *apuntador ) O { O *apuntador=*apuntador * *apuntador * *apuntador; O cout<<"el nuevo valor de numero es:n"<<numero; O cout<<"nla direccion nueva de numero es:n"<<*apuntador; O cout<<"la direccion de numero es:n"<<&apuntador; O }
  • 12.
    O # include "iostream" O using namespace std; O int a,b,c; O int suma(int *); O int *apuntador,*apuntador1,*e; O int main() O { O O system("cls"); O cout<<"dame a "; O cin>>a; O cout<<"dame b "; O cin>>b; O c=a+b; O suma(&c); O cout<<c; O cout<<"n"; O cout<<*e; O cout<<"n"; O cout<<&c; O cout<<"n"; O cout<<e; O cout<<"n"; O cout<<&e; O cout<<"n"; O system("pause"); O return 0; O } O O int suma (int *) O { O apuntador=&a; O apuntador1 = &b; O e = &c; O return *e; O O O }
  • 13.
    O # include "iostream" O using namespace std; O int a,b,c; O int suma(int *); O int *apuntador,*apuntador1,*e; O int main() O { O O system("cls"); O cout<<"dame a "; O cin>>a; O cout<<"dame b "; O cin>>b; O c=a+b; O suma(&c); O O system("pause"); O return 0; O } O O int suma (int *) O { O apuntador=&a; O apuntador1 = &b; O e = &c; O cout<<c; O cout<<"n"; O cout<<*e; O cout<<"n"; O cout<<&c; O cout<<"n"; O cout<<e; O cout<<"n"; O cout<<&e; O cout<<"n"; O O O }
  • 14.
    DIFERENCIA ENTRE LOSPARAMETROS POR VALOR Y POR REFERENCIA O LOS PARAMETROS POR VALOR (DECLARADOS SIN &) RECIBEN COPIAS DE LOS VALORES DE LOS ARGUMENTOS QUE SE PASAN Y O LA ASIGNACION A PARAMETROS POR VALOR DE UNA FUNCION NUNCA CAMBIAN EL VALOR DEL ARGUMENTO ORIGINAL PASADO A LOS PARAMETROS. O LOS PARAMETROS POR REFERENCIA ( DECLARADOS CON &) RECIBEN LA DIRECCION DE LOS ARGUMENTOS PASADOS Y O EN UNA FUNCION, LAS ASIGNACIONES A PARAMETROS POR REFERENCIA CAMBIAN LOS VALORES DE LOS ARGUMENTOS ORIGINALES.