C Estructura y Función
C Estructura y Función
En este tutorial, aprenderá a pasar variables de estructura como argumentos a una función. Aprenderá a devolver una estructura desde una función con la ayuda de ejemplos.
Al igual que las variables de tipos integrados, también puede pasar variables de estructura a una función.
Pasar estructuras a funciones
Le recomendamos que aprenda estos tutoriales antes de aprender a pasar estructuras a funciones.
- Estructuras en C
- Funciones C
- Función definida por el usuario
Así es como puedes pasar estructuras a una función
#include <stdio.h>
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 \n is entered
// \n is discarded
scanf("%[^\n]%*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("\nDisplaying information\n");
printf("Name: %s", s.name);
printf("\nAge: %d", s.age);
}
Salida
Enter name: Bond Enter age: 13 Displaying information Name: Bond Age: 13
Aquí, una variable de estructura s1 de tipo struct student
es creado. La variable se pasa al display()
función usando display(s1);
declaración.
Retornar estructura desde una función
Así es como puede devolver la estructura de una función:
#include <stdio.h>
struct student
{
char name[50];
int age;
};
// function prototype
struct student getInformation();
int main()
{
struct student s;
s = getInformation();
printf("\nDisplaying information\n");
printf("Name: %s", s.name);
printf("\nRoll: %d", s.age);
return 0;
}
struct student getInformation()
{
struct student s1;
printf("Enter name: ");
scanf ("%[^\n]%*c", s1.name);
printf("Enter age: ");
scanf("%d", &s1.age);
return s1;
}
Aquí, el getInformation()
la función se llama usando s = getInformation();
declaración. La función devuelve una estructura de tipo struct student
. La estructura devuelta se muestra desde el main()
función.
Tenga en cuenta que el tipo de retorno de getInformation()
también es struct student
.
Pasar 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 de 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 <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("For first number,\n");
printf("Enter real part: ");
scanf("%f", &c1.real);
printf("Enter imaginary part: ");
scanf("%f", &c1.imag);
printf("For second number, \n");
printf("Enter real part: ");
scanf("%f", &c2.real);
printf("Enter imaginary part: ");
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
For first number, Enter real part: 1.1 Enter imaginary part: -2.4 For second number, Enter real part: 3.4 Enter imaginary part: -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 pasa al addNumbers()
función. Aquí, resultado se pasa por referencia.
Cuando el resultado variable dentro del addNumbers()
se altera, el resultado variable dentro del main()
la función también se modifica en consecuencia.
Lenguaje C
- estructura C#
- Función amiga de C++ y Clases amigas
- estructura C
- Estructuras C y punteros
- C - Estructura del programa
- C - Tipos de datos
- C - Constantes y Literales
- C - Funciones
- Sobrecarga de C++ (operador y función)
- Transformadores eléctricos:función, estructura y más
- 15 partes diferentes de la máquina de torno y su función