Strutture e Puntatori

di il
3 risposte

Strutture e Puntatori

Ciao Ragazzi,

sono alle prime armi in C e i puntatori sono la mia bestia nera..
questo è il quesito.

Ho una struttura definita globale in un file.h e nel main la includo con "include file.h" ed è di questo tipo:

typedef struct{
  int Nmax;
  int nsp;
  double *p;
}data
Ora nel file file.c definisco una funzione di inizializzazione della mia struttura, per allocare spazio per p che è un vettore di nmax elementi:

void init_struc(data *dat)
{
  dat->p=malloc(...ect ect)
 for(i=0;i<nmax;i++)
   dat->p[i]=0
}
Nel main main.c devo utilizzare questa struttura. E Ho un pointer *q che deve assumere il valore del pointer dat->p. Non voglio utilizzare nel main sempre dat->p percio voglio nominarlo con un puntatore *q (questo è quello che vorrei fare).

La domanda è questa..come faccio a far puntare a q lo stesso indirizzo di dat->p?

ho provato con
q=&dat->p[0] 
ma ho ottengo il classico segmentation fault.

Potete aiutarmi??

Grazie a tutti

3 Risposte

  • Re: Strutture e Puntatori

    Dove e come viene inizializzato dat?
  • Re: Strutture e Puntatori

    Dat lo dichiaro nel main.c in questo modo:
    
    data *dat;
    dat=(data *)malloc(sizeof(data));
    
  • Re: Strutture e Puntatori

    La domanda è questa..come faccio a far puntare a q lo stesso indirizzo di dat->p?
    E' corretto come hai fatto. Verifica allocazione precedente dat->p

    Max
Devi accedere o registrarti per scrivere nel forum
3 risposte