c++ Funciones por referencia

Iniciado por programador10, 11 Junio 2011, 02:54 AM

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

programador10

Hola disculpe no se porque no compila¿?
ayuda!
Código (cpp) [Seleccionar]
#include <cstdlib>
#include <iostream>
#define max 300
using namespace std;
void llenar(int &a);
void leer(int a,int b,int c);
int main(int argc, char *argv[])
{   
    int num[max],i,x,y,h;
   
    llenar(num);
    leer(x,y,h);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

void leer(int a,int b,int c)
{
     cout<<"Ingrese el valor X ...(0.x)"<<endl;
     cin>>a;
     cout<<"Ingrese el valor Y ...(0.y)"<<endl;
     cin>>b;
     cout<<"Ingrese el valor Z ...(0.z)"<<endl;
     cin>>c;
     
}
void llenar(int &a)
{   
     int i;
          for(i=0;i<max;i++)
          {
               a[i]=0;     
          }
}

Acermax

Tu quieres trabajar en la función llenar como si fuera un array, y por el contrario la declaras como un entero.

Citar
http://c.conclase.net/curso/?cap=015b

Cuando pasamos un array como parámetro en realidad estamos pasando un puntero al primer elemento del array, así que las modificaciones que hagamos en los elementos del array dentro de la función serán permanentes aún después de retornar.

Esto significa que declarando simplemente el array bien en la función ya te funciona lo que tu quieres hacer.

Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#define max 300
using namespace std;
void llenar(int a[]);
void leer(int a,int b,int c);
int main(int argc, char *argv[])
{
    int num[max],i,x,y,h;

    llenar(num);
    leer(x,y,h);

    system("PAUSE");
    return EXIT_SUCCESS;
}

void leer(int a,int b,int c)
{
     cout<<"Ingrese el valor X ...(0.x)"<<endl;
     cin>>a;
     cout<<"Ingrese el valor Y ...(0.y)"<<endl;
     cin>>b;
     cout<<"Ingrese el valor Z ...(0.z)"<<endl;
     cin>>c;

}
void llenar(int a[])
{
     int i;
          for(i=0;i<max;i++)
          {
               a[i]=0;
          }
          cout << endl;
}

programador10