Ejemplo de Código

// Paso de parámetros de tipo estructura

#include <iostream>
#include <stdlib.h>

using namespace std;

// Definición de la estructura
struct Persona {
    char nombre[30];
    int edad;
} p1;

// Prototipos de funciones
void pedirDatos();
void mostrarDatos(Persona);

// Función principal
int main() {
    pedirDatos(); // Solicitar datos del usuario
    mostrarDatos(p1); // Mostrar los datos ingresados

    system("pause"); // Pausar para ver el resultado
    return 0;
}

// Funciones
void pedirDatos() {
    cout << "Digite su nombre: ";
    cin.ignore(); // Ignorar el carácter de nueva línea pendiente
    cin.getline(p1.nombre, 30, '\n'); // Leer el nombre del usuario
    cout << "Digite su edad: ";
    cin >> p1.edad; // Leer la edad del usuario
}

void mostrarDatos(Persona p) {
    cout << "\nSu nombre es: " << p.nombre << endl;
    cout << "Su edad es: " << p.edad << endl;
}

Explicación del Código

  1. Definición de la Estructura:
    cpp
    struct Persona {
    char nombre[30];
    int edad;
    } p1;

    • La estructura Persona tiene dos campos: nombre de tipo char (cadena de caracteres) y edad de tipo int.
    • Se declara una instancia de Persona llamada p1.
  2. Prototipos de Funciones:
    cpp
    void pedirDatos();
    void mostrarDatos(Persona);

    • pedirDatos() solicita al usuario que ingrese datos.
    • mostrarDatos(Persona p) muestra los datos de una persona.
  3. Función Principal (main):
    cpp
    int main() {
    pedirDatos();
    mostrarDatos(p1);
    system("pause");
    return 0;
    }

    • Llama a pedirDatos() para obtener los datos del usuario y luego a mostrarDatos(p1) para mostrar los datos almacenados en la estructura p1.
    • system("pause") se usa para pausar la ejecución y permitir al usuario ver el resultado en la consola.
  4. Función pedirDatos:
    cpp
    void pedirDatos() {
    cout << "Digite su nombre: ";
    cin.ignore(); // Limpiar el buffer de entrada
    cin.getline(p1.nombre, 30, '\n');
    cout << "Digite su edad: ";
    cin >> p1.edad;
    }

    • Usa cin.ignore() para ignorar el carácter de nueva línea pendiente en el buffer después de leer la entrada del nombre.
    • cin.getline() se usa para leer una línea completa del nombre.
    • cin >> p1.edad lee la edad del usuario.
  5. Función mostrarDatos:
    cpp
    void mostrarDatos(Persona p) {
    cout << "\nSu nombre es: " << p.nombre << endl;
    cout << "Su edad es: " << p.edad << endl;
    }

    • Imprime el nombre y la edad de la persona pasada como argumento.

Ejemplo de Uso

Salida del programa:

Digite su nombre: Jesus Angel Martinez Mendoza
Digite su edad: 19
Su nombre es: Jesus Angel Martinez Mendoza
Su edad es: 19
Presione una tecla para continuar . . .

Consideraciones

  • Paso de Parámetros por Valor: En este ejemplo, la estructura Persona se pasa a la función mostrarDatos por valor. Esto significa que se pasa una copia de la estructura. Los cambios realizados en la copia dentro de la función no afectan a la estructura original.
  • Uso de cin.ignore(): Se utiliza para evitar problemas con la entrada de datos después de usar cin para leer una cadena y luego un número entero.