Pasar matriz char a una función como referencia

Iniciado por KISKE, 18 Junio 2013, 10:55 AM

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

KISKE

Hola,
Tengo un problema al pasar una matriz char a una función como referencia, he intentado como veinte formas diferentes y todas me arrojan errores, iguales o diferentes.

Es para un trabajo de la facultad, todavía no vimos punteros, por lo que no los podemos usar, y sinceramente no se si estoy o no usando punteros, si pudieran aclararme, se los agradecería.

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdio.h>

int ingresarDatos__PrimerLote(char &, int &, int &);

int main()
{
char descCat[7][64];

int sueldoCat[7];
int valorHoraExtraCat[7];

ingresarDatos__PrimerLote(&descCat, &sueldoCat, &valorHoraExtraCat);

system("pause");

return 0;
}

int ingresarDatos__PrimerLote(char *descCat[7][64], int *sueldoCat[7], int *valorHoraExtraCat[7])
{
int i;
for(i = 1; i <= 6; ++i)
{
printf("Ingrese descripción de la categoría #%d: ", i);
fflush(stdin);
gets(*descCat[i]);

printf("Ingrese sueldo basico de la categoría #%d: ", i);
scanf("%d", *sueldoCat[i]);

printf("Ingrese el valor de la hora extra de la categoría #%d: ", i);
scanf("%d", *valorHoraExtraCat[i]);
}

return 0;
}


NOTA: Uso Dev-C++ 4.9.9.2

Saludos y gracias de antemano!

amchacon

Respuesta corta: Las matrices siempre se pasan por referencia por lo que no hace falta ponerlo explícitamente:

Código (cpp) [Seleccionar]

int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7]); // Prototipo

int main()
{
   //...

   ingresarDatos__PrimerLote(desCat,sueldoCat,valorHoraExtraCat);

  //...
}

int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7])
{
  //...
}


Respuesta larga: desCat es una referencia (puntero) al primer elemento del vector. Como no estás cambiando la referencia sino los datos, se puede pasar por valor perfectamente.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

KISKE

Cita de: amchacon en 18 Junio 2013, 12:30 PM
Respuesta corta: Las matrices siempre se pasan por referencia por lo que no hace falta ponerlo explícitamente:

Código (cpp) [Seleccionar]

int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7]); // Prototipo

int main()
{
   //...

   ingresarDatos__PrimerLote(desCat,sueldoCat,valorHoraExtraCat);

  //...
}

int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7])
{
  //...
}


Respuesta larga: desCat es una referencia (puntero) al primer elemento del vector. Como no estás cambiando la referencia sino los datos, se puede pasar por valor perfectamente.
Hola amchacon,
Se solucionaron los problemas y funciona correctamente, me complique demasiado al pedo.

Muchas gracias por la explicación también!