elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar matriz char a una función como referencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar matriz char a una función como referencia  (Leído 5,678 veces)
KISKE

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Pasar matriz char a una función como referencia
« en: 18 Junio 2013, 10:55 am »

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
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. int ingresarDatos__PrimerLote(char &, int &, int &);
  5.  
  6. int main()
  7. {
  8. char descCat[7][64];
  9.  
  10. int sueldoCat[7];
  11. int valorHoraExtraCat[7];
  12.  
  13. ingresarDatos__PrimerLote(&descCat, &sueldoCat, &valorHoraExtraCat);
  14.  
  15. system("pause");
  16.  
  17. return 0;
  18. }
  19.  
  20. int ingresarDatos__PrimerLote(char *descCat[7][64], int *sueldoCat[7], int *valorHoraExtraCat[7])
  21. {
  22. int i;
  23. for(i = 1; i <= 6; ++i)
  24. {
  25. printf("Ingrese descripción de la categoría #%d: ", i);
  26. fflush(stdin);
  27. gets(*descCat[i]);
  28.  
  29. printf("Ingrese sueldo basico de la categoría #%d: ", i);
  30. scanf("%d", *sueldoCat[i]);
  31.  
  32. printf("Ingrese el valor de la hora extra de la categoría #%d: ", i);
  33. scanf("%d", *valorHoraExtraCat[i]);
  34. }
  35.  
  36. return 0;
  37. }

NOTA: Uso Dev-C++ 4.9.9.2

Saludos y gracias de antemano!


« Última modificación: 18 Junio 2013, 10:59 am por .k19 » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Pasar matriz char a una función como referencia
« Respuesta #1 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
  1. int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7]); // Prototipo
  2.  
  3. int main()
  4. {
  5.   //...
  6.  
  7.   ingresarDatos__PrimerLote(desCat,sueldoCat,valorHoraExtraCat);
  8.  
  9.  //...
  10. }
  11.  
  12. int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7])
  13. {
  14.  //...
  15. }

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.


En línea

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

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Pasar matriz char a una función como referencia
« Respuesta #2 en: 18 Junio 2013, 13:07 pm »

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

Código
  1. int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7]); // Prototipo
  2.  
  3. int main()
  4. {
  5.   //...
  6.  
  7.   ingresarDatos__PrimerLote(desCat,sueldoCat,valorHoraExtraCat);
  8.  
  9.  //...
  10. }
  11.  
  12. int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7])
  13. {
  14.  //...
  15. }

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!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines