PDA

Visualizza la versione completa : [C] puntatori ed array


puntino
15-06-2008, 12:28
Vorrei sapere se ho svolto le seguenti operazioni con i vettori, per favore.
in particolare la funzione init_window.
Grazie




typedef struct {
char data[DATALENGTH];
int nseq;
}packet;

typedef struct {
packet window[WINDOWSIZE];
packet* head, *tail;
}window_wrapper;

void init_window(window_wrapper* w){ //inzializza head e tail al primo elemento

w->head = &w->window[0];
w->tail = &w->window[0];
}

oregon
15-06-2008, 12:31
Non si capisce cosa tu voglia ...

puntino
15-06-2008, 13:06
in pratica ho un vettore di pacchetti window[WINDOWSIZE]e voglio inizializzare un puntatore alla testa (head) e uno alla coda (tail) a questo vettore di pacchetti.
il vettore dei pacchettì e i relativi puntatori testa e coda sono all'interno di un'unica struttura window_wrapper.
Con la funzione init window voglio che il puntatore testa e alla coda puntino al primo elemento del vettore dei pacchetti ossia head punta a window[0] e tail punta a window[0].


Volevo capire se la funzione init_window è scritta correttamente. Non ricevo errori di compilazione ma non so se può dare problemi a run time.
Scusa se non sono stato chiaro

oregon
15-06-2008, 13:33
Se ho capito, dovrebbe andare bene, ma ti bastava scrivere



void init_window(window_wrapper* w)
{
w->head = w->tail = w->window;
}


Naturalmente, quando passerai il puntatore w alla init_window, questo dovra' puntare ad una struttura gia' allocata in memoria ...

puntino
15-06-2008, 13:44
Originariamente inviato da oregon
Se ho capito, dovrebbe andare bene, ma ti bastava scrivere



void init_window(window_wrapper* w)
{
w->head = w->tail = w->window;
}


Naturalmente, quando passerai il puntatore w alla init_window, questo dovra' puntare ad una struttura gia' allocata in memoria ...

Certo w viene inizializzata nel main-
grazie

Loading