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