Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Passaggio di Struct alle Funzioni | Lavorare con Puntatori e Struct
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Padronanza delle Struct in C

bookPassaggio di Struct alle Funzioni

Le funzioni possono lavorare con le strutture proprio come con le variabili normali:

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

Affinché una funzione possa "interagire" con una struttura, ad esempio modificare i campi di una struttura esistente, la funzione deve accettare un puntatore alla struttura:

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

Le strutture possono essere create all'interno delle funzioni, e tali strutture possono "esistere" al di fuori delle funzioni (non localmente) se la funzione restituisce un puntatore a tale struttura:

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

Swipe to start coding

Gestisci un piccolo team di tre dipendenti, ognuno con una tariffa oraria e un numero di ore lavorate a settimana.
Il tuo compito è calcolare la media degli stipendi settimanali per l'intero team.

All'interno della funzione calculateWeeklySalary:

  1. Ricevi una struttura di tipo Employee come parametro.
  2. Accedi ai campi hourlyRate e hoursWorked.
  3. Moltiplicali per calcolare lo stipendio settimanale di quel dipendente.
  4. Restituisci lo stipendio calcolato come double.

All'interno della funzione calculateAverageSalary:

  1. Ricevi tre strutture Employee come parametri.
  2. Chiama calculateWeeklySalary() per ciascun dipendente per ottenere il loro stipendio totale.
  3. Somma tutti e tre gli stipendi.
  4. Dividi il totale per 3.0 per ottenere la media dello stipendio settimanale.
  5. Restituisci questa media come double.

Example

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

Average Weekly Salary: 878.00

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

bookPassaggio di Struct alle Funzioni

Scorri per mostrare il menu

Le funzioni possono lavorare con le strutture proprio come con le variabili normali:

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

Affinché una funzione possa "interagire" con una struttura, ad esempio modificare i campi di una struttura esistente, la funzione deve accettare un puntatore alla struttura:

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

Le strutture possono essere create all'interno delle funzioni, e tali strutture possono "esistere" al di fuori delle funzioni (non localmente) se la funzione restituisce un puntatore a tale struttura:

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

Swipe to start coding

Gestisci un piccolo team di tre dipendenti, ognuno con una tariffa oraria e un numero di ore lavorate a settimana.
Il tuo compito è calcolare la media degli stipendi settimanali per l'intero team.

All'interno della funzione calculateWeeklySalary:

  1. Ricevi una struttura di tipo Employee come parametro.
  2. Accedi ai campi hourlyRate e hoursWorked.
  3. Moltiplicali per calcolare lo stipendio settimanale di quel dipendente.
  4. Restituisci lo stipendio calcolato come double.

All'interno della funzione calculateAverageSalary:

  1. Ricevi tre strutture Employee come parametri.
  2. Chiama calculateWeeklySalary() per ciascun dipendente per ottenere il loro stipendio totale.
  3. Somma tutti e tre gli stipendi.
  4. Dividi il totale per 3.0 per ottenere la media dello stipendio settimanale.
  5. Restituisci questa media come double.

Example

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

Average Weekly Salary: 878.00

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5
single

single

some-alt