Paso de parametro por referencia

Iniciado por abad023, 5 Diciembre 2011, 00:13 AM

0 Miembros y 1 Visitante están viendo este tema.

abad023

Buenas, he hecho el siguiente programa, pero no se como pasarle el vector fibonnaci por referencia para que funcione correctamente...

#include <stdio.h>


void crearFibonnaci(int *fibonnaci){
   fibonnaci[0]=1;
   fibonnaci[1]=1;
   
   int i=2;
   while(i!=10){
      fibonnaci=fibonnaci[i-1]+fibonnaci[i-2];
      i++;
   }
}


void sumarFibonnaci(int *suma, int *fibonnaci){
   
   int i=0;
   while(i!=10){
      *suma+=fibonnaci;
      i++;
   }
}

main(){

int fibonnaci[10];
int suma=0;

   switch(fork()){
      case -1:
      printf("Error\n");
      exit(1);

      case 0:
      crearFibonnaci(fibonnaci);
      break;

      default:
      wait();
      sumarFibonnaci(&suma,fibonnaci);
      printf("Suma de Fibonnaci: %i\n",suma);         
      break;
   }

}

Gracias por vuestra ayuda.


adastra

case 0:
    [b]  crearFibonnaci(&fibonnaci);[/b]
      break;

abad023


naderST

Los vectores siempre se pasan por referencia, aquí tienes un error:


fibonnaci=fibonnaci[i-1]+fibonnaci[i-2];


Porque se supone que fibonnaci apunta a tu vector y tu estas cambiando a donde apunta fibonnaci.

abad023

Y como deberia ponerlo??
Lo siento, pero soy bastante novato en programacion en c  :-X

x64core

veo muchos errores :P creo que es solo demostracion :P para usar arrays como parametros con como punteros de hecho se comportan casi como punteros por que apuntan a los elementos, tenes que hacerlo asi:

declaracion:
int main(){
int fibonnaci[10];
...
FUNCION(fibonnaci)
}

LA FUNCION:
FUNCION(int fibonnaci[10])
{
...
}

si es de varias dimenciones entonces tenes que especificar en el parametro de la funcion tambien, si es redimencionable
entonces usa un puntero y el parametro de la funcion debe ser un puntero :)