Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Overførsel af Structs til Funktioner | Arbejde med Pointere og Structs
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Beherskelse af C Structs

bookOverførsel af Structs til Funktioner

Funktioner kan arbejde med strukturer på samme måde som med almindelige variabler:

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

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

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

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

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

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:

  1. Modtag en struktur af typen Employee som parameter.
  2. Tilgå felterne hourlyRate og hoursWorked.
  3. Multiplicer dem for at beregne ugentlig løn for den pågældende medarbejder.
  4. Returnér den beregnede løn som en double.

Inde i funktionen calculateAverageSalary:

  1. Modtag tre Employee-strukturer som parametre.
  2. Kald calculateWeeklySalary() for hver medarbejder for at få deres samlede løn.
  3. Læg alle tre lønninger sammen.
  4. Divider det samlede beløb med 3.0 for at finde den gennemsnitlige ugentlige løn.
  5. Returnér dette gennemsnit som en double.

Example

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

Average Weekly Salary: 878.00

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookOverfø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

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

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

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

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

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

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:

  1. Modtag en struktur af typen Employee som parameter.
  2. Tilgå felterne hourlyRate og hoursWorked.
  3. Multiplicer dem for at beregne ugentlig løn for den pågældende medarbejder.
  4. Returnér den beregnede løn som en double.

Inde i funktionen calculateAverageSalary:

  1. Modtag tre Employee-strukturer som parametre.
  2. Kald calculateWeeklySalary() for hver medarbejder for at få deres samlede løn.
  3. Læg alle tre lønninger sammen.
  4. Divider det samlede beløb med 3.0 for at finde den gennemsnitlige ugentlige løn.
  5. Returnér dette gennemsnit som en double.

Example

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

Average Weekly Salary: 878.00

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5
single

single

some-alt