En este tutorial, aprenderá a pasar variables de estructura como argumentos a una función. Aprenderá a devolver la estructura de una función con la ayuda de ejemplos.
De manera similar a las variables de tipos incorporados, también puede pasar variables de estructura a una función.
Pasando estructuras a funciones
Le recomendamos que aprenda estos tutoriales antes de aprender a pasar estructuras a funciones.
- Estructuras C
- Funciones C
- Función definida por el usuario
Así es como puede pasar estructuras a una función
#include struct student ( char name(50); int age; ); // function prototype void display(struct student s); int main() ( struct student s1; printf("Enter name: "); // read string input from the user until is entered // is discarded scanf("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); display(s1); // passing struct as an argument return 0; ) void display(struct student s) ( printf("Displaying information"); printf("Name: %s", s.name); printf("Age: %d", s.age); )
Salida
Ingrese el nombre: Bond Ingrese la edad: 13 Visualización de información Nombre: Bond Edad: 13
Aquí, struct student
se crea una variable de estructura s1 de tipo . La variable se pasa a la display()
función using display(s1);
statement.
Devolver estructura de una función
Así es como puede devolver la estructura de una función:
#include struct student ( char name(50); int age; ); // function prototype struct student getInformation(); int main() ( struct student s; s = getInformation(); printf("Displaying information"); printf("Name: %s", s.name); printf("Roll: %d", s.age); return 0; ) struct student getInformation() ( struct student s1; printf("Enter name: "); scanf ("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); return s1; )
Aquí, la getInformation()
función se llama using s = getInformation();
statement. La función devuelve una estructura de tipo struct student
. La estructura devuelta se muestra desde la main()
función.
Tenga en cuenta que el tipo de retorno de getInformation()
también es struct student
.
Pasando estructura por referencia
También puede pasar estructuras por referencia (de manera similar a como pasa variables de tipo incorporado por referencia). Le sugerimos que lea el tutorial paso por referencia antes de continuar.
Durante el paso por referencia, las direcciones de memoria de las variables de estructura se pasan a la función.
#include typedef struct Complex ( float real; float imag; ) complex; void addNumbers(complex c1, complex c2, complex *result); int main() ( complex c1, c2, result; printf("For first number,"); printf("Enter real part: "); scanf("%f", &c1.real); printf("Enter imaginary part: "); scanf("%f", &c1.imag); printf("For second number, "); printf("Enter real part: "); scanf("%f", &c2.real); printf("Enter imaginary part: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("result.real = %.1f", 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, ingrese la parte real: 1.1 Ingrese la parte imaginaria: -2.4 Para el segundo número, ingrese la parte real: 3.4 Ingrese la parte imaginaria: -3.2 result.real = 4.5 result.imag = -5.6
En el programa anterior, tres variables de estructura c1, c2 y la dirección de resultado se pasan a la addNumbers()
función. Aquí, el resultado se pasa por referencia.
Cuando addNumbers()
se altera la variable de resultado dentro de, la variable de resultado dentro de la main()
función también se modifica en consecuencia.