In questo esercizio per la creazione della struct viene passato il proprio indirizzo (crea(&vd)). Lavorando con un puntatore di puntatore (si fornisce l'indirizzo di un area allocata dinamicamente), l'accesso alle variabili interne alla struct avviene tramite vd->lenght. Viene inoltre raffinata la funzione di stampa.
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct{
int* v; /*vettore dinamico*/
unsigned lenght; /*lunghezza vettore*/
} vector;
void crea(vector *vd){
vd->v = (int*) malloc(vd->lenght * sizeof (int));
}
void riempi(vector vd){
int i;
for(i=0;i<vd.lenght;i++)
vd.v[i] = rand();
}
void stampa(vector vd){
int i;
for(i=0;i<vd.lenght;i++){
if(i>=0 && i<vd.lenght-1)
printf("%d, ", vd.v[i]);
else
printf("%d.", vd.v[i]);
}
}
int main(void){
vector vd;
vd.lenght = 10;
crea(&vd);
riempi(vd);
stampa(vd);
scanf("%d");
}
Nessun commento:
Posta un commento