Created
November 30, 2017 21:13
-
-
Save MarcoBuster/ebfc9ab728d56786977a8426eb987ff3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
// Piccolo tutorial sui puntatori per gli struct e su malloc in C / C++ | |
// Relased under Creative Commons CC0 1.0 Universal License (public domain) | |
struct person { | |
char name[30]; | |
int age; | |
float weight; | |
}; | |
int main() { | |
struct person *person_pointer; | |
int numero_persone, i; | |
printf("Inserisci il numero di persone che vuoi inserire: "); | |
scanf("%d", &numero_persone); | |
// Alloca X celle di memoria utilizzando malloc() per struct person | |
// Ritorna un puntatore di struct person. | |
person_pointer = (struct person*) malloc(numero_persone * sizeof(struct person)); | |
// INPUT DATI | |
for (i=0; i < numero_persone; i++) { | |
/* | |
* La sintassi pointer_di_struct->x è uguale a | |
* (*pointer_di_struct).x; | |
* Ricordiamoci che pointer_di_struct è un indirizzo progressivo. | |
* | |
* In questo ciclo for assegno i valori inseriti dall'utente | |
* nella nuova struct person che viene identificata dall'indirizzo | |
* person_pointer che all'inizio è X, poi X+1 ecc... fino a X+numero_persone. | |
* Non dobbiamo preoccuparci di finire fuori dal nostro spazio di memoria disponibile, | |
* è già stata alloccata da malloc(). | |
*/ | |
printf("\n----- Inserimento persona numero #%d -----\n", i); | |
printf("Inserisci nome: "); | |
scanf("%s", &((person_pointer+i)->name)); | |
printf("Inserisci età: "); | |
scanf("%d", &((person_pointer+i)->age)); | |
printf("Inserisci peso: "); | |
scanf("%f", &((person_pointer+i)->weight)); | |
} | |
// OUTPUT DATI | |
printf("\nInserimento dati terminato."); | |
printf("\nNOME\tETA'\tPESO\n"); | |
for(i = 0; i < numero_persone; ++i) { | |
// Stesse cose dell'input (\t è il carattere di tab) | |
printf("%s\t%d\t%g\n", | |
(person_pointer+i)->name, | |
(person_pointer+i)->age, | |
(person_pointer+i)->weight); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment