• Jueves 28 de Marzo de 2024, 12:04

Autor Tema:  Re: problena con el paso de parametros. HELP!!  (Leído 2262 veces)

novato

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: problena con el paso de parametros. HELP!!
« en: Jueves 28 de Febrero de 2002, 16:29 »
0
Alguien puede explicarme la diferencia entre paso por direccion o paso por referencia??

void f(int *p) por direccion
void fr(int& r)  por referencia

Gracias

tenesor

  • Miembro activo
  • **
  • Mensajes: 90
    • Ver Perfil
Re: problena con el paso de parametros. HELP!!
« Respuesta #1 en: Jueves 28 de Febrero de 2002, 19:58 »
0
Bueno, estas son las diferencias:

Por valor: los cambios realizados dentro de la función en el argumento enviado, no afectaran al valor original de las variables de la llamada. No se pueden enviar por valor arrays.

     Por referencia: Se envia a la función la dirección de memoria donde se encuentra la variable o dato (&). Y esta vez si que modificara el valor de las variables utilizadas en la llamada.

Espero que esto te saque de dudas.

Saludos,
  Tenesor
Que el toro estoque al matador, que el preso enciere al guardián, que solo sean de cerveza los tanques, que el pez pesque al pescador y que el tigre dome al domador, que la television se prohiba y el hachis se legalice, que africa sea tierra mágica y no trágica... cambiando el mundo [NS]

bench

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: problena con el paso de parametros. HELP!!
« Respuesta #2 en: Miércoles 6 de Marzo de 2002, 01:57 »
0
La Manipulacion de Las Variables en C

Parten de Su Declaración:

Si Declaras Una Variable Tipo char

char Variable_Char;

el Compilador Reservo un Byte de memoria Para la Variable_Char.

Si Declaras UN PUNTERO tipo char

char *Punt_Char;

El Compilador No Reserva Memoria, sino identifica el lugar donde puedes guardar la direccion de cualquier Variable o Arreglo del
tipo char.

Si Declaramos un Arreglo del

char Arreglo_Char[256];

El Compilador Reserva Memoria Para 256 caracteres, Su Puntero es el Nombre del arreglo "Arreglo_Char" y sus elementos estan identificado desde el Primero Arreglo_Char[0]hasta el Ultimo Arreglo_Char[255].

COMO SE MANIPULAN Y POR QUE?

Punt_Char = &Variable_Char;

Si Variable_Char = "A";

Punt_Char Contine la Direccion de la Variable_Char

*Punt_Char contiene el Valor ASCCI de la "A";

Cuando Pasas Una Variable de los tipos Basicos del "C" char,short,int,long,double
Como Argumento a Una Funcion, La Funcion Recibe el Valor Que Contenga al Inicio, y
Cualquier Modificacion que se efectue dentro del cuerpo de la funcion No tedra ningun efecto Sobre la Variable en el Programa que la Llamo. Manteniendo el Valor que Tenia al al Momento de llamar la Funcion.

Si Pasas el Puntero Si Se Puede Modificar el valor de la Variable Dentro de la Funcion.

Si
Punt_Char = Arreglo_Char;

Punt_Char Toma el Valor del Puntero al Primer elemento del Arreglo. (&Arreglo_Char[0])

Y la Unica Forma de Pasar de Pasar Una Variable Compleja Como Parametro a Una Funcion Es Mediante Su Puntero.

Funcion_Char(Arreglo_Char);
o Funcion_Char(Punt_Char);

Espero Te Sirva la Informacion

delpa

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
problena con el paso de parametros. HELP!!
« Respuesta #3 en: Miércoles 6 de Marzo de 2002, 16:09 »
0
La diferencia la explico bien tenesor, pero creo que el ejemplo que tu has puesto se refiere a dos casos de pasar por referencia, ya que en el primero pasas una direccion de memoria directamente, pero en el segundo pasas un puntero que no es otra cosa que una direccion de memoria.

int numero=5;

f(numero);  /*paso por valor*/
/* le pasas a la funcion el valor 5, equivalente a poner f(5);  */

f(&numero)  /*paso por referencia*/
/* pasas a la funcion la direccion de  numero si en esa funcion le sumo 3 por ejemplo, despues de ejecutarse f la variable numero valdra 8  */







[Modificado el 3/6/02 por delpa]