o.O certo che si puòOriginariamente inviato da simo_85
Non puoi dichiarare un puntatore in una struttura, questo vale sia per int, char etc..
Lo sono sempre all'inizioOriginariamente inviato da kapopadu
Ciao Ragazzi,
sono alle prime armi in C e i puntatori sono la mia bestia nera..
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.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:
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:typedef struct{ int nmax; int nsp; double *p; }data
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 }
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().
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()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
ma ho ottengo il classico segmentation fault.codice:q=&dat->p[0]
Potete aiutarmi??
Grazie a tutti