Ver Mensaje Individual
  #4  
Antiguo 06-03-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Bien... El problema es que ids no recibe el valor creado en método(int *id). Has pasado el parámetro por valor. Para que cambie el valor de ids, tienes tres maneras:

1) Pasar el parámetro por referencia void metodo(int* &id);
2) Que metodo devuelva un valor int* metodo();
3) Pasar un puntero a un puntero void metodo(int** pid);


1) Por referencia:
Código:
void metodo(int* &id)
{
  //Como tu funcion....
}

//Uso
int *ids;
metodo(ids);
// Ahora ids apunta a un array de enteros;

2) Devolviendo el valor
Código:
int* metodo()
{
   int *id = new id[N];
   .
   .
   .
   return id;
}

//Uso
int* ids = metodo();
// Ahora ids apunta a un array de enteros;
3) Por puntero
Código:
void metodo(int**pid)
{
   int *id = new id[N];
   *pid = id;
   .
   .
   .
}

//Uso
int *ids;
metodo(&ids);
// Ahora ids apunta a un array de enteros;
En general, para pasar una variable por referencia la funcion la declaras asi:

Código:
tipo funcion(tipo &Variable);
Todos estos métodos para pasar variables y que la función cambie el valor de dichas variables, los puedes aplicar a cualquier tipo de datos que tengas.

Saludos.

Última edición por escafandra fecha: 06-03-2008 a las 22:51:35.
Responder Con Cita