Originariamente inviato da simo_85
Non puoi dichiarare un puntatore in una struttura, questo vale sia per int, char etc..
Cioè?!![]()
Allora per inizializzare la struttura che rappresenta il tipo della tua struttura dati di solito si fa cosi:
codice:typedef struct { int nmax; int nsp; double *p; } data; /* Non ho idea di cosa rappresentino i campi della struttura quindi per quello te la dovrai modificare te come desideri */ data * init_struc(const size_t size, const int nmax, const int nsp) { data *dataPtr = NULL; // Puntatore alla struttura /* Per prima cosa allochi memoria dinamicamente per la struttura e ti assicuri che l'allocazione sia riuscita */ dataPtr = (data *) malloc( sizeof(data) ); if( dataPtr != NULL ) { // Allochi il tuo array di double dataPtr->p = (double *) malloc( size * sizeof(double) ); if( dataPtr->p != NULL ) { // Inizializzi gli altri membri della struttura dataPtr->nmax = nmax; dataPtr->nsp = nsp; // Inizializzi a 0 gli elementi del vettore in modo decente memeset( dataPtr->p, 0, size * sizeof(double) ); // Torni il puntatore alla struttura return dataPtr; } } return NULL; // Torna NULL in caso di errore } // E si userà in questo modo int main() { data *mydataPtr = NULL; // Parametri puramente casuali mydataPtr = init_struc( 100, 100, 5 ); //.... return 0; }
ps: ricordati che la memoria allocata va rilasciata non appena non serve più...
![]()

Rispondi quotando