Skip to content

Instantly share code, notes, and snippets.

@MarcoBuster
Created November 30, 2017 21:13
Show Gist options
  • Save MarcoBuster/ebfc9ab728d56786977a8426eb987ff3 to your computer and use it in GitHub Desktop.
Save MarcoBuster/ebfc9ab728d56786977a8426eb987ff3 to your computer and use it in GitHub Desktop.
#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