Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿Como pasar un array por referencia y por valor?

Estas en el tema de ¿Como pasar un array por referencia y por valor? en el foro de C/C++ en Foros del Web. Pues eso, que no se como pasar un array por valor y por referencia. ¿Alguien me puede dejar un ejemplo de como hacerlo? Busco algo ...
  #1 (permalink)  
Antiguo 24/11/2009, 13:32
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
¿Como pasar un array por referencia y por valor?

Pues eso, que no se como pasar un array por valor y por referencia. ¿Alguien me puede dejar un ejemplo de como hacerlo?

Busco algo parecido a esto:

Código:
#include <stdio.h>

int Valor(int);
int Referencia(int);

int main(void)
{
    int array[30];
    
    printf("Posicion 5, Valor: %d", Valor(¿qué hay que poner aquí?));
    printf("Posicion 5, Referencia %d, Referencia( ¿que hay que poner aqui?)
    
    return 0;
}

int Valor( ¿que hay que poner aquí? )
..........

int Referencia( ¿que hay que poner aquí? )
..........
Es un código que me acabo de inventar, para poder ver un poco la diferencia. Sé pasar parámetros normales (tipo entero, float, etc...), pero no se pasar como parámetro un array. ¿Cómo se hace?

¿Para pasar el array como referencia, tendría que pasarlo como puntero? De ser así, ¿como se haría?

Gracias por adelantado.
  #2 (permalink)  
Antiguo 25/11/2009, 04:07
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: ¿Como pasar un array por referencia y por valor?

C++:
Código:
#include <stdio.h>

int Valor(int);
int Referencia(int&);

int main(void)
{
    int array[30];
    array[4] = 33;
    
    printf("Posicion 5, Valor: %d\r\n", Valor(array[4]));
    printf("Posicion 5, Valor: %d\r\n", array[4]);
    printf("Posicion 5, Referencia %d\r\n", Referencia(array[4]));
    printf("Posicion 5, Referencia %d\r\n", array[4]);
    
    return 0;
}

int Valor(int v)
{
  return v;
}


int Referencia(int &r)
{
  return r++;
}
C:
Código:
#include <stdio.h>

int Valor(int);
int Referencia(int*);

int main(void)
{
    int array[30];
    array[4] = 33;
    
    printf("Posicion 5, Valor: %d\r\n", Valor(array[4]));
    printf("Posicion 5, Valor: %d\r\n", array[4]);
    printf("Posicion 5, Referencia %d\r\n", Referencia(&array[4]));
    printf("Posicion 5, Referencia %d\r\n", array[4]);
    
    return 0;
}

int Valor(int v)
{
  return v;
}


int Referencia(int *r)
{
  return (*r)++;
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 25/11/2009, 09:15
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: ¿Como pasar un array por referencia y por valor?

Ok, muchas gracias. Solo una pregunta más. Ponte que ahora quiero en vez de pasar la posición 5, para cambiar ese valor, poder modificar el array completo.

Por ejemplo, para inicializar a 0 el array dentro de una función y que modifique los valores del array también fuera de la función. ¿Sería algo así?

Código:
#include <stdio.h>

void Referencia(int*);

int main(void)
{
    int array[30];
    
    Referencia(&array);
    printf("Posicion 5, Referencia %d\r\n", array[4]);
    
    return 0;
}

void Referencia(int *r)
{
    int i;
    
    for(i=0; i<30; i++);
         *r[i]=0;
}
Es que no me termina de funcionar. ¿Qué es lo que estoy haciendo mal?
  #4 (permalink)  
Antiguo 25/11/2009, 09:34
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: ¿Como pasar un array por referencia y por valor?

Código:
for(i=0; i<30; i++)
  r[i] = 0;
No termines el bucle en la misma linea (te sobra un punto y coma) y al acceder como un array no hace falta desreferenciar nuevamente (*).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 25/11/2009, 12:10
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: ¿Como pasar un array por referencia y por valor?

Ok, muchas gracias.

Todo claro.
  #6 (permalink)  
Antiguo 25/11/2009, 12:32
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: ¿Como pasar un array por referencia y por valor?

De nadas
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:43.