Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Paso de Structs a las Funciones | Trabajando con Punteros y Structs
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Dominio de las Estructuras en C

bookPaso de Structs a las Funciones

Las funciones pueden trabajar con estructuras igual que con variables regulares:

main.c

main.c

copy
123456789101112131415161718192021
#include <stdio.h> // structure definition typedef struct { char name[50]; } Person; // function to display information about a person void printPerson(Person p) { printf("Name: %s\n", p.name); } int main() { // creating a structure and initializing its values Person person1 = {"John"}; // call a function to display information about a person printPerson(person1); return 0; }

Para que una función pueda "interactuar" con una estructura, por ejemplo, modificar los campos de una estructura existente, la función debe aceptar un puntero a la estructura:

main.c

main.c

copy
12345678910111213141516171819202122232425262728293031
#include <stdio.h> // structure definition typedef struct { char symbol; }Example; // function for changing the values of structure fields via a pointer void changePoint(Example* ptr, int newSymbol) { // check for NULL pointer if (ptr != NULL) { ptr->symbol = newSymbol; } } int main() { // create the Example structure and a pointer Example ptr1 = {'H'}; Example* ptr = &ptr1; printf("Old symbol: %c | %p\n", ptr1.symbol, &ptr1); // use function to change the field of structures changePoint(ptr, 'y'); printf("New symbol: %c | %p\n", ptr1.symbol, &ptr1); return 0; }

Las estructuras pueden ser creadas dentro de funciones, y tales estructuras pueden "existir" fuera de las funciones (no localmente) si la función retorna un puntero a dicha estructura:

main.c

main.c

copy
1234567891011121314151617181920212223242526272829303132
#include <stdio.h> #include <stdlib.h> // structure definition typedef struct { int value; }Example; // function creates a structure with the given field Example* CreateStruct(int setVal) { Example* ptr = (Example*)malloc(sizeof(Example)); // check for successful memory allocation if (ptr != NULL) { ptr->value = setVal; } return ptr; } int main() { // use function to create structure Example* ptrToStruct = CreateStruct(23); printf("Value inside struct: %d", ptrToStruct->value); free(ptrToStruct); // free memory return 0; }
Tarea

Swipe to start coding

Está gestionando un pequeño equipo de tres empleados, y cada uno tiene una tarifa por hora y un número de horas trabajadas por semana.
Su tarea es calcular el salario semanal promedio para todo el equipo.

Dentro de la función calculateWeeklySalary:

  1. Recibir una estructura de tipo Employee como parámetro.
  2. Acceder a los campos hourlyRate y hoursWorked.
  3. Multiplicarlos para calcular el salario semanal de ese empleado.
  4. Devolver el salario calculado como un double.

Dentro de la función calculateAverageSalary:

  1. Recibir tres estructuras Employee como parámetros.
  2. Llamar a calculateWeeklySalary() para cada empleado para obtener su pago total.
  3. Sumar los tres salarios.
  4. Dividir el total entre 3.0 para obtener el salario semanal promedio.
  5. Devolver este promedio como un double.

Example

Employee NameHourly RateHours WorkedWeekly Salary
Alice Johnson22.540900.00
Bob Smith18.038684.00
Carol White25.0421050.00

Average Weekly Salary: 878.00

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

close

bookPaso de Structs a las Funciones

Desliza para mostrar el menú

Las funciones pueden trabajar con estructuras igual que con variables regulares:

main.c

main.c

copy
123456789101112131415161718192021
#include <stdio.h> // structure definition typedef struct { char name[50]; } Person; // function to display information about a person void printPerson(Person p) { printf("Name: %s\n", p.name); } int main() { // creating a structure and initializing its values Person person1 = {"John"}; // call a function to display information about a person printPerson(person1); return 0; }

Para que una función pueda "interactuar" con una estructura, por ejemplo, modificar los campos de una estructura existente, la función debe aceptar un puntero a la estructura:

main.c

main.c

copy
12345678910111213141516171819202122232425262728293031
#include <stdio.h> // structure definition typedef struct { char symbol; }Example; // function for changing the values of structure fields via a pointer void changePoint(Example* ptr, int newSymbol) { // check for NULL pointer if (ptr != NULL) { ptr->symbol = newSymbol; } } int main() { // create the Example structure and a pointer Example ptr1 = {'H'}; Example* ptr = &ptr1; printf("Old symbol: %c | %p\n", ptr1.symbol, &ptr1); // use function to change the field of structures changePoint(ptr, 'y'); printf("New symbol: %c | %p\n", ptr1.symbol, &ptr1); return 0; }

Las estructuras pueden ser creadas dentro de funciones, y tales estructuras pueden "existir" fuera de las funciones (no localmente) si la función retorna un puntero a dicha estructura:

main.c

main.c

copy
1234567891011121314151617181920212223242526272829303132
#include <stdio.h> #include <stdlib.h> // structure definition typedef struct { int value; }Example; // function creates a structure with the given field Example* CreateStruct(int setVal) { Example* ptr = (Example*)malloc(sizeof(Example)); // check for successful memory allocation if (ptr != NULL) { ptr->value = setVal; } return ptr; } int main() { // use function to create structure Example* ptrToStruct = CreateStruct(23); printf("Value inside struct: %d", ptrToStruct->value); free(ptrToStruct); // free memory return 0; }
Tarea

Swipe to start coding

Está gestionando un pequeño equipo de tres empleados, y cada uno tiene una tarifa por hora y un número de horas trabajadas por semana.
Su tarea es calcular el salario semanal promedio para todo el equipo.

Dentro de la función calculateWeeklySalary:

  1. Recibir una estructura de tipo Employee como parámetro.
  2. Acceder a los campos hourlyRate y hoursWorked.
  3. Multiplicarlos para calcular el salario semanal de ese empleado.
  4. Devolver el salario calculado como un double.

Dentro de la función calculateAverageSalary:

  1. Recibir tres estructuras Employee como parámetros.
  2. Llamar a calculateWeeklySalary() para cada empleado para obtener su pago total.
  3. Sumar los tres salarios.
  4. Dividir el total entre 3.0 para obtener el salario semanal promedio.
  5. Devolver este promedio como un double.

Example

Employee NameHourly RateHours WorkedWeekly Salary
Alice Johnson22.540900.00
Bob Smith18.038684.00
Carol White25.0421050.00

Average Weekly Salary: 878.00

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
single

single

some-alt