Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Dominando structs en C: Paso, retorno y manejo por referencia

Estructuras en C: Paso, retorno y manejo por referencia

En programación C, las estructuras permiten agrupar datos relacionados en una sola entidad. Esta guía recorre tres operaciones esenciales con structs: pasarlos a funciones, retornarlos desde funciones y manipularlos por referencia. Cada sección incluye una explicación concisa y un ejemplo funcional para consolidar su comprensión.


Pasar structs a funciones

Al igual que los tipos integrados, las variables struct pueden pasarse directamente a una función. Antes de profundizar, es útil repasar estructuras en C, funciones en C y funciones definidas por el usuario.

El siguiente ejemplo demuestra cómo pasar un struct student a una función que imprime su contenido.

#include <stdio.h>
struct student {
    char name[50];
    int age;
};
// Prototipo de función
void display(struct student s);
int main() {
    struct student s1;
    printf("Introduzca nombre: ");
    scanf("%[^ ]%%*c", s1.name); // leer hasta salto de línea
    printf("Introduzca edad: ");
    scanf("%d", &s1.age);
    display(s1); // pasar struct a función
    return 0;
}
void display(struct student s) {
    printf("\nMostrando información\n");
    printf("Nombre: %s", s.name);
    printf("\nEdad: %d", s.age);
}

Salida

Introduzca nombre: Bond
Introduzca edad: 13
Mostrando información
Nombre: Bond
Edad: 13

Retornar un struct desde una función

Las funciones pueden retornar structs completos, permitiendo una separación limpia de recolección y procesamiento de datos. El siguiente ejemplo recopila información de un estudiante dentro de una función y la retorna a main.

#include <stdio.h>
struct student {
    char name[50];
    int age;
};
// Prototipo de función
struct student getInformation();
int main() {
    struct student s;
    s = getInformation();
    printf("\nMostrando información\n");
    printf("Nombre: %s", s.name);
    printf("\nEdad: %d", s.age);
    return 0;
}
struct student getInformation() {
    struct student s1;
    printf("Introduzca nombre: ");
    scanf("%[^ ]%%*c", s1.name);
    printf("Introduzca edad: ");
    scanf("%d", &s1.age);
    return s1;
}

El tipo de retorno de la función coincide con el struct que retorna, asegurando seguridad de tipos y claridad.


Pasar un struct por referencia

Cuando necesita que una función modifique un struct, pase su dirección (es decir, un puntero). Esto es análogo a pasar tipos integrados por referencia. El siguiente ejemplo suma dos números complejos y almacena el resultado a través de un puntero.

#include <stdio.h>
typedef struct Complex {
    float real;
    float imag;
} complex;
void addNumbers(complex c1, complex c2, complex *result);
int main() {
    complex c1, c2, result;
    printf("Para el primer número,\n");
    printf("Introduzca parte real: ");
    scanf("%f", &c1.real);
    printf("Introduzca parte imaginaria: ");
    scanf("%f", &c1.imag);
    printf("Para el segundo número,\n");
    printf("Introduzca parte real: ");
    scanf("%f", &c2.real);
    printf("Introduzca parte imaginaria: ");
    scanf("%f", &c2.imag);
    addNumbers(c1, c2, &result);
    printf("\nresult.real = %.1f\n", result.real);
    printf("result.imag = %.1f", result.imag);
    return 0;
}
void addNumbers(complex c1, complex c2, complex *result) {
    result->real = c1.real + c2.real;
    result->imag = c1.imag + c2.imag;
}

Salida

Para el primer número,
Introduzca parte real: 1.1
Introduzca parte imaginaria: -2.4
Para el segundo número,
Introduzca parte real: 3.4
Introduzca parte imaginaria: -3.2
result.real = 4.5
result.imag = -5.6

Como result se pasa por referencia, cualquier cambio dentro de addNumbers afecta inmediatamente la variable en main.


Al dominar estas técnicas, puede escribir código C más modular, legible y eficiente que aprovecha todo el poder de las estructuras.

Lenguaje C

  1. Transformadores eléctricos: función, diseño y aplicaciones industriales
  2. Los 15 componentes clave de un torno y sus funciones
  3. Entendiendo los Structs en C#: Definición, Uso y Diferencias Clave
  4. Funciones y clases amigas en C++: dominando el control de acceso
  5. Dominando structs en C: Definición, variables, acceso y ejemplos avanzados
  6. Dominando structs y punteros en C: Guía práctica
  7. Entendiendo la estructura de un programa C: Guía para principiantes
  8. Entendiendo los tipos de datos en C: Guía completa
  9. Entendiendo constantes y literales en C: Tipos, uso y mejores prácticas
  10. Dominando funciones en C: Estructura, declaración y mejores prácticas
  11. Dominando la Sobrecarga en C++: Funciones y Operadores Explicados