sabato 2 marzo 2013

C - Struct passata per indirizzo

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