Att Skicka Strukturer till Funktioner
Funktioner kan arbeta med strukturer på samma sätt som med vanliga 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; }
För att en funktion ska kunna "interagera" med en struktur, till exempel ändra fälten i en befintlig struktur, måste funktionen ta emot en pekare till 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 skapas inuti funktioner, och sådana strukturer kan "existera" utanför funktionerna (inte lokalt) om funktionen returnerar en pekare till 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 ett litet team med tre anställda, och varje person har en timlön samt ett antal arbetade timmar per vecka.
Din uppgift är att beräkna genomsnittlig veckolön för hela teamet.
I funktionen calculateWeeklySalary:
- Ta emot en struktur av typen
Employeesom parameter. - Kom åt fälten
hourlyRateochhoursWorked. - Multiplicera dessa för att beräkna veckolönen för den anställde.
- Returnera den beräknade lönen som en
double.
I funktionen calculateAverageSalary:
- Ta emot tre
Employee-strukturer som parametrar. - Anropa
calculateWeeklySalary()för varje anställd för att få deras totala lön. - Addera alla tre löner.
- Dividera summan med
3.0för att få genomsnittlig veckolön. - Returnera detta genomsnitt 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
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Fantastiskt!
Completion betyg förbättrat till 4.35
Att Skicka Strukturer till Funktioner
Svep för att visa menyn
Funktioner kan arbeta med strukturer på samma sätt som med vanliga 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; }
För att en funktion ska kunna "interagera" med en struktur, till exempel ändra fälten i en befintlig struktur, måste funktionen ta emot en pekare till 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 skapas inuti funktioner, och sådana strukturer kan "existera" utanför funktionerna (inte lokalt) om funktionen returnerar en pekare till 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 ett litet team med tre anställda, och varje person har en timlön samt ett antal arbetade timmar per vecka.
Din uppgift är att beräkna genomsnittlig veckolön för hela teamet.
I funktionen calculateWeeklySalary:
- Ta emot en struktur av typen
Employeesom parameter. - Kom åt fälten
hourlyRateochhoursWorked. - Multiplicera dessa för att beräkna veckolönen för den anställde.
- Returnera den beräknade lönen som en
double.
I funktionen calculateAverageSalary:
- Ta emot tre
Employee-strukturer som parametrar. - Anropa
calculateWeeklySalary()för varje anställd för att få deras totala lön. - Addera alla tre löner.
- Dividera summan med
3.0för att få genomsnittlig veckolön. - Returnera detta genomsnitt 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
Tack för dina kommentarer!
single