Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Å Sende Strukturer til Funksjoner | Arbeide med Pekere og Strukturer
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Mestre C-strukturer

bookÅ Sende Strukturer til Funksjoner

Funksjoner kan arbeide med strukturer på samme måte som med vanlige 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 funksjon skal kunne "samhandle" med en struktur, for eksempel endre feltene i en eksisterende struktur, må funksjonen motta en peker 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 opprettes inne i funksjoner, og slike strukturer kan "leve" utenfor funksjonene (ikke lokalt) dersom funksjonen returnerer en peker til en slik 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; }
Oppgave

Swipe to start coding

Du leder et lite team på tre ansatte, og hver av dem har en timelønn og et antall arbeidede timer per uke.
Din oppgave er å beregne gjennomsnittlig ukelønn for hele teamet.

Inne i funksjonen calculateWeeklySalary:

  1. Motta en struktur av typen Employee som parameter.
  2. Få tilgang til feltene hourlyRate og hoursWorked.
  3. Multipliser disse for å beregne ukelønn for den ansatte.
  4. Returner den beregnede lønnen som en double.

Inne i funksjonen calculateAverageSalary:

  1. Motta tre Employee-strukturer som parametere.
  2. Kall calculateWeeklySalary() for hver ansatt for å finne deres totale lønn.
  3. Legg sammen alle tre lønningene.
  4. Del totalen på 3.0 for å finne gjennomsnittlig ukelønn.
  5. Returner dette gjennomsnittet 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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 5
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

bookÅ Sende Strukturer til Funksjoner

Sveip for å vise menyen

Funksjoner kan arbeide med strukturer på samme måte som med vanlige 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 funksjon skal kunne "samhandle" med en struktur, for eksempel endre feltene i en eksisterende struktur, må funksjonen motta en peker 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 opprettes inne i funksjoner, og slike strukturer kan "leve" utenfor funksjonene (ikke lokalt) dersom funksjonen returnerer en peker til en slik 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; }
Oppgave

Swipe to start coding

Du leder et lite team på tre ansatte, og hver av dem har en timelønn og et antall arbeidede timer per uke.
Din oppgave er å beregne gjennomsnittlig ukelønn for hele teamet.

Inne i funksjonen calculateWeeklySalary:

  1. Motta en struktur av typen Employee som parameter.
  2. Få tilgang til feltene hourlyRate og hoursWorked.
  3. Multipliser disse for å beregne ukelønn for den ansatte.
  4. Returner den beregnede lønnen som en double.

Inne i funksjonen calculateAverageSalary:

  1. Motta tre Employee-strukturer som parametere.
  2. Kall calculateWeeklySalary() for hver ansatt for å finne deres totale lønn.
  3. Legg sammen alle tre lønningene.
  4. Del totalen på 3.0 for å finne gjennomsnittlig ukelønn.
  5. Returner dette gjennomsnittet 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 desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 5
single

single

some-alt