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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Duda] Pasar struct por referencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda] Pasar struct por referencia  (Leído 5,961 veces)
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
[Duda] Pasar struct por referencia
« en: 26 Agosto 2014, 03:48 am »

Buenas, mi duda es como pasar un registro por referencia a una función.                                                                                                                                                                                                                                                                                          


« Última modificación: 26 Agosto 2014, 16:59 pm por wiD^ » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Duda] Pasar struct por referencia
« Respuesta #1 en: 26 Agosto 2014, 04:25 am »

En C++ solo tienes que indicar en la declaración de la función que el parámetro en cuestión es una referencia con "&", por ejemplo:
Código
  1. #include <iostream>
  2. using std::cin;
  3.  
  4. struct punto {
  5.   int x;
  6.   int y;
  7. };
  8.  
  9. void leer_punto(punto& p);
  10.  
  11. // ...
  12.  
  13. int main()
  14. {
  15.   punto p;
  16.  
  17.   leer_punto(p);
  18.  
  19.   // ...
  20.  
  21.   return 0;
  22. }
  23.  
  24. void leer_punto(punto& p)
  25. {
  26.   cin >> p.x;
  27.   cin >> p.y;
  28. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: [Duda] Pasar struct por referencia
« Respuesta #2 en: 26 Agosto 2014, 04:35 am »

En C cambia algo?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Duda] Pasar struct por referencia
« Respuesta #3 en: 26 Agosto 2014, 08:20 am »

Por supuesto que si ya que C no tiene referencias (pueden emularse mediante punteros).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: [Duda] Pasar struct por referencia
« Respuesta #4 en: 26 Agosto 2014, 16:59 pm »

Muchas gracias rir!
En línea

jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: [Duda] Pasar struct por referencia
« Respuesta #5 en: 26 Agosto 2014, 17:19 pm »

En realidad no se resolvio, sigo teniendo el mismo problema:

Código
  1. struct registro
  2.    {
  3.        char nombre[30];
  4.        char apellido[30];
  5.        int telefono;
  6.        int edad;
  7.  
  8.    };
  9.  
  10. void SetearReg(registro *clientes, int *i)
  11. {
  12.    for(i = 0; i >= 200; i++)
  13.    {
  14.        clientes[i].telefono = 0;
  15.        clientes[i].edad = 0;
  16.    }
  17. }
  18.  
  19. int main()
  20. {
  21.  
  22.    registro clientes[200];
  23.    int i;
  24.  
  25.   SetearReg(&clientes, &i);
  26. }

Los errores:

||=== Build: Debug in Registro de clientes (compiler: GNU GCC Compiler) ===|
|13|error: unknown type name 'registro'|
||In function 'main':|
|27|error: unknown type name 'registro'|
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Re: [Duda] Pasar struct por referencia
« Respuesta #6 en: 26 Agosto 2014, 17:28 pm »

Debes declarar correctamente la estructura
Código
  1. struct registro clientes[200];
Un saludo.
En línea

Regístrate en
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: [Duda] Pasar struct por referencia
« Respuesta #7 en: 26 Agosto 2014, 18:16 pm »

En realidad no se resolvio, sigo teniendo el mismo problema:

Te convendría mas declarar la siguiente estructura de esta manera:

Código
  1. typedef struct
  2. {
  3.    char nombre[30];
  4.    char apellido[30];
  5.    int telefono;
  6.    int edad;
  7. }registro;

Y en la función SetearReg la condición de terminación de for es incorrecta (i >= 200) quedaría así :

Código
  1. void SetearReg(registro *clientes)
  2. {
  3.    int i;
  4.    for(i = 0; i <= 200; i++)
  5.    {
  6.        clientes[i].telefono = 0;
  7.        clientes[i].edad = 0;
  8.    }
  9. }

Saludos
En línea

jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: [Duda] Pasar struct por referencia
« Respuesta #8 en: 26 Agosto 2014, 20:26 pm »

Y si quiero pasar un arreglo de registros?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Duda] Pasar struct por referencia
« Respuesta #9 en: 27 Agosto 2014, 02:50 am »

Y si quiero pasar un arreglo de registros?
No entiendo la pregunta ya que eso es lo que estas haciendo en tu programa:
Código
  1. int main()
  2. {
  3.  
  4.   registro clientes[200];
  5.   int i;
  6.  
  7.  SetearReg(&clientes, &i);
  8. }
Por cierto no debes utilizar el operador "dirección de" (el '&') en la llamada a función y el segundo parámetro no es necesario. Y se debe utilizar la palabra reservada "struct" en la declaración del array a menos que lo estés compilando como C++.

Por ultimo lo único que debes hacer es revisar con cuidado la función "SetearReg" cortesía de Blaster y aplicar las correcciones a tu programa.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema al pasar una struct de C++
Programación Visual Basic
el_c0c0 0 2,327 Último mensaje 31 Marzo 2009, 00:34 am
por el_c0c0
Problema al pasar cadenas a los campos de un struct en FASM
ASM
Swicher 5 4,714 Último mensaje 8 Febrero 2013, 03:49 am
por Swicher
pasar por referencia un puntero
Programación C/C++
m@o_614 2 7,309 Último mensaje 18 Enero 2014, 18:13 pm
por rir3760
Duda acerca de como pasar por referencia matrices dinamicas?
Programación C/C++
xuhipoint 6 5,407 Último mensaje 11 Mayo 2014, 22:59 pm
por xuhipoint
pasar datos a una struct
Programación C/C++
flony 6 4,481 Último mensaje 30 Enero 2015, 16:57 pm
por flony
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines