Originariamente inviato da simo_85
Non puoi dichiarare un puntatore in una struttura, questo vale sia per int, char etc..
o.O certo che si può

Originariamente inviato da kapopadu
Ciao Ragazzi,

sono alle prime armi in C e i puntatori sono la mia bestia nera..
Lo sono sempre all'inizio

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

codice:
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:

codice:
void init_struc(data *dat)
{
 int nmax=dat->nmax;
  dat->p=malloc((nmax)*sizeof(double*))
for(i=0;i<nmax;i++)
   dat->p[i]=0
}
La prima domanda è: nel main hai inizializzato anche il puntatore dat che passi alla funzione ? perchè se non fosse accedere ad nmax darebbe segment fault.

a malloc passagli sizeof(double) non double*

Per il resto mancano un po' di punti e virgola ma il codice è apposto anche se invece di inizializzare tutto a 0 con un for avresti potuto sostituire malloc() con calloc().

Originariamente inviato da kapopadu
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
codice:
q=&dat->p[0]
ma ho ottengo il classico segmentation fault.

Potete aiutarmi??

Grazie a tutti
Probabilmente ti da Segmentation Fault per la cosa che t'ho detto prima, quindi che dat non è allocato. Per farlo o dichiari data dat; e passi la reference alla funzione, oppure dichiari data *dat; e la allochi con malloc()