1. 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.
2. 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
3. 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.
4. 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.
5. 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 .
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 // 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 }
7. 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;
}
8. 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 }
9. #include <iostream>
using namespace std;
int cubo (int *);
int main()
{
system("cls");
int numero = 5;
int *apuntador;
apuntador=№
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;
}
10. 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=№
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 }
11. 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 }
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
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 }
13. 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.