Overførsel af Structs til Funktioner
Funktioner kan arbejde med strukturer på samme måde som med almindelige variabler:
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; }
For at en funktion kan "interagere" med en struktur, for eksempel ændre felterne i en eksisterende struktur, skal funktionen modtage en pointer til strukturen:
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; }
Strukturer kan oprettes inde i funktioner, og sådanne strukturer kan "leve" uden for funktionerne (ikke lokalt), hvis funktionen returnerer en pointer til en sådan struktur:
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
Du leder et lille team på tre medarbejdere, og hver af dem har en timeløn samt et antal arbejdstimer pr. uge.
Din opgave er at beregne den gennemsnitlige ugentlige løn for hele teamet.
Inde i funktionen calculateWeeklySalary:
- Modtag en struktur af typen
Employeesom parameter. - Tilgå felterne
hourlyRateoghoursWorked. - Multiplicer dem for at beregne ugentlig løn for den pågældende medarbejder.
- Returnér den beregnede løn som en
double.
Inde i funktionen calculateAverageSalary:
- Modtag tre
Employee-strukturer som parametre. - Kald
calculateWeeklySalary()for hver medarbejder for at få deres samlede løn. - Læg alle tre lønninger sammen.
- Divider det samlede beløb med
3.0for at finde den gennemsnitlige ugentlige løn. - Returnér dette gennemsnit som en
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
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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?
Fantastisk!
Completion rate forbedret til 4.35
Overførsel af Structs til Funktioner
Stryg for at vise menuen
Funktioner kan arbejde med strukturer på samme måde som med almindelige variabler:
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; }
For at en funktion kan "interagere" med en struktur, for eksempel ændre felterne i en eksisterende struktur, skal funktionen modtage en pointer til strukturen:
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; }
Strukturer kan oprettes inde i funktioner, og sådanne strukturer kan "leve" uden for funktionerne (ikke lokalt), hvis funktionen returnerer en pointer til en sådan struktur:
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
Du leder et lille team på tre medarbejdere, og hver af dem har en timeløn samt et antal arbejdstimer pr. uge.
Din opgave er at beregne den gennemsnitlige ugentlige løn for hele teamet.
Inde i funktionen calculateWeeklySalary:
- Modtag en struktur af typen
Employeesom parameter. - Tilgå felterne
hourlyRateoghoursWorked. - Multiplicer dem for at beregne ugentlig løn for den pågældende medarbejder.
- Returnér den beregnede løn som en
double.
Inde i funktionen calculateAverageSalary:
- Modtag tre
Employee-strukturer som parametre. - Kald
calculateWeeklySalary()for hver medarbejder for at få deres samlede løn. - Læg alle tre lønninger sammen.
- Divider det samlede beløb med
3.0for at finde den gennemsnitlige ugentlige løn. - Returnér dette gennemsnit som en
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
Løsning
Tak for dine kommentarer!
single