Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Passage de Structures aux Fonctions | Travail avec les Pointeurs et les Structures
Maîtriser les Structs en C

bookPassage de Structures aux Fonctions

Les fonctions peuvent manipuler les structures de la même manière que les variables ordinaires :

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; }

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

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; }

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

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; }
Tâche

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 :

  1. Recevoir une structure de type Employee en paramètre.
  2. Accéder aux champs hourlyRate et hoursWorked.
  3. Les multiplier pour calculer le salaire hebdomadaire de cet employé.
  4. Retourner le salaire calculé en tant que double.

Dans la fonction calculateAverageSalary :

  1. Recevoir trois structures Employee en paramètres.
  2. Appeler calculateWeeklySalary() pour chaque employé afin d'obtenir leur rémunération totale.
  3. Additionner les trois salaires.
  4. Diviser le total par 3.0 pour obtenir le salaire hebdomadaire moyen.
  5. Retourner cette moyenne en tant que double.

Example

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

Average Weekly Salary: 878.00

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 5
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

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?

close

bookPassage 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

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; }

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

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; }

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

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; }
Tâche

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 :

  1. Recevoir une structure de type Employee en paramètre.
  2. Accéder aux champs hourlyRate et hoursWorked.
  3. Les multiplier pour calculer le salaire hebdomadaire de cet employé.
  4. Retourner le salaire calculé en tant que double.

Dans la fonction calculateAverageSalary :

  1. Recevoir trois structures Employee en paramètres.
  2. Appeler calculateWeeklySalary() pour chaque employé afin d'obtenir leur rémunération totale.
  3. Additionner les trois salaires.
  4. Diviser le total par 3.0 pour obtenir le salaire hebdomadaire moyen.
  5. Retourner cette moyenne en tant que double.

Example

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

Average Weekly Salary: 878.00

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 5
single

single

some-alt