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ù...