English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá a pasar una variable de estructura como parámetro a una función. Aprenderá cómo devolver struct desde una función mediante ejemplos.
Al igual que con variables de tipos integrados, también puede pasar variables de estructura a funciones.
Le recomendamos que aprenda estos tutoriales antes de aprender cómo pasar una estructura a una función.
Esta es la forma de pasar una estructura a una función
#include <stdio.h> struct student { char nombre[50]; int edad; }; //原型函数 void display(struct student s); int main() { struct student s1; printf("Ingrese el nombre: "); //Leer la cadena de entrada del usuario hasta que se ingrese \n // \n se descarta scanf("%[^\n]%*c",*c", s1.name); printf("Ingrese la edad: "); scanf("%d", &s1.age); display(s1); //Pasar la estructura como parámetro return 0; } void display(struct student s) { printf("\nMostrar información\n"); printf("Nombre: %s", s.nombre); printf("\nEdad: %d", s.edad); }
Resultado de salida
Ingrese el nombre: Bond Ingrese la edad: 13 Mostrar información Nombre: Bond Edad: 13
Aquí, se crea la variable de tipo struct student s1. Usar display(s1)Pasar la variable al declarar la función display().
Esta es la forma de devolver una estructura desde una función:
#include <stdio.h> struct student { char nombre[50]; int edad; }; //原型函数 struct student getInformation(); int main() { struct student s; s = getInformation(); printf("\nMostrar información\n"); printf("Nombre: %s", s.name); printf("\nNúmero de matrícula: %d", s.age)} return 0; } struct student getInformation() { struct student s1; printf("Ingrese el nombre: "); scanf("%[^\n]%*c", &s*c", s1.name); printf("Ingrese la edad: "); scanf("%d", &s1.age); return s1; }
Aquí, se utiliza s = getInformation() para llamar a la declaración de la función getInformation(). La función devuelve una estructura del tipo struct student. Muestra la estructura devuelta en la función main().
Nota, el tipo de retorno de getInformation() también es struct student.
También puede transmitir estructuras por referencia (como si transmitiera variables de tipos integrados por referencia). Le recomendamos que leaReferenciaGuía.
Durante la transmisión por referencia, la dirección de memoria de la variable de estructura se pasa al función.
#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("Ingrese el primer número:\n"); printf("Ingrese el componente real: "); scanf("%f", &c1.real); printf("Ingrese el componente imaginario: "); scanf("%f", &c1.imag); printf("Ingrese el segundo número: "); printf("Ingrese el componente real: "); scanf("%f", &c2.real); printf("Ingrese el componente imaginario: "); 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; }
Resultado de salida
Ingrese el primer número: Ingrese el componente real: 5.8 Ingrese el componente imaginario: -3.4 Ingrese el segundo número: Ingrese el componente real: 9.9 Ingrese el componente imaginario: -4.5 result.real = 15.7 result.imag = -7.9
En el programa anterior, tres variables de estructura c1,c2Y la dirección del resultado se pasa a la función addNumbers(). Aquí, el resultado se pasa por referencia.
Cuando se cambia la variable de resultado interna de addNumbers(), la variable de resultado interna de main() también se cambia de manera correspondiente.