Passage de Structures aux Fonctions
Les fonctions peuvent manipuler les structures de la même manière que les variables ordinaires :
main.c
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; }
Pour qu'une fonction puisse « interagir » avec une structure, par exemple modifier les champs d'une structure existante, la fonction doit accepter un pointeur vers la structure :
main.c
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; }
Les structures peuvent être créées à l'intérieur des fonctions, et ces structures peuvent « exister » en dehors des fonctions (pas localement) si la fonction retourne un pointeur vers une telle structure :
main.c
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; }
Swipe to start coding
Vous gérez une petite équipe de trois employés, chacun ayant un taux horaire et un nombre d'heures travaillées par semaine.
Votre tâche consiste à calculer le salaire hebdomadaire moyen de l'ensemble de l'équipe.
Dans la fonction calculateWeeklySalary :
- Recevoir une structure de type
Employeeen paramètre. - Accéder aux champs
hourlyRateethoursWorked. - Les multiplier pour calculer le salaire hebdomadaire de cet employé.
- Retourner le salaire calculé en tant que
double.
Dans la fonction calculateAverageSalary :
- Recevoir trois structures
Employeeen paramètres. - Appeler
calculateWeeklySalary()pour chaque employé afin d'obtenir leur rémunération totale. - Additionner les trois salaires.
- Diviser le total par
3.0pour obtenir le salaire hebdomadaire moyen. - Retourner cette moyenne en tant que
double.
Example
| Employee Name | Hourly Rate | Hours Worked | Weekly Salary |
|---|---|---|---|
| Alice Johnson | 22.5 | 40 | 900.00 |
| Bob Smith | 18.0 | 38 | 684.00 |
| Carol White | 25.0 | 42 | 1050.00 |
Average Weekly Salary: 878.00
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you show an example of a function that modifies a structure using a pointer?
How do I return a pointer to a structure created inside a function?
What are the risks of returning pointers to structures created inside functions?
Génial!
Completion taux amélioré à 4.35
Passage de Structures aux Fonctions
Glissez pour afficher le menu
Les fonctions peuvent manipuler les structures de la même manière que les variables ordinaires :
main.c
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; }
Pour qu'une fonction puisse « interagir » avec une structure, par exemple modifier les champs d'une structure existante, la fonction doit accepter un pointeur vers la structure :
main.c
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; }
Les structures peuvent être créées à l'intérieur des fonctions, et ces structures peuvent « exister » en dehors des fonctions (pas localement) si la fonction retourne un pointeur vers une telle structure :
main.c
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; }
Swipe to start coding
Vous gérez une petite équipe de trois employés, chacun ayant un taux horaire et un nombre d'heures travaillées par semaine.
Votre tâche consiste à calculer le salaire hebdomadaire moyen de l'ensemble de l'équipe.
Dans la fonction calculateWeeklySalary :
- Recevoir une structure de type
Employeeen paramètre. - Accéder aux champs
hourlyRateethoursWorked. - Les multiplier pour calculer le salaire hebdomadaire de cet employé.
- Retourner le salaire calculé en tant que
double.
Dans la fonction calculateAverageSalary :
- Recevoir trois structures
Employeeen paramètres. - Appeler
calculateWeeklySalary()pour chaque employé afin d'obtenir leur rémunération totale. - Additionner les trois salaires.
- Diviser le total par
3.0pour obtenir le salaire hebdomadaire moyen. - Retourner cette moyenne en tant que
double.
Example
| Employee Name | Hourly Rate | Hours Worked | Weekly Salary |
|---|---|---|---|
| Alice Johnson | 22.5 | 40 | 900.00 |
| Bob Smith | 18.0 | 38 | 684.00 |
| Carol White | 25.0 | 42 | 1050.00 |
Average Weekly Salary: 878.00
Solution
Merci pour vos commentaires !
single