From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
in data 05-21-2014 07:13 AM
Ciao a tutti,
Ho bisogno di fare una funzione alla quale passo un puntatore come parametro, e al suo interno crea un array di dati ( es double ), la quale dimensione viene determinata all'interno della funzione stessa.
Al termine della funzione mi serve che questo puntatore punti all'array creato.
Allego un esempio dove passo il puntatore ptr1,e come return assegno il puntatore ptr2 ( sono dichiarati allo stesso modo).
Al termine della funzione ptr1 rimane NULL , mentre ptr2 viene correttamente riportato.
Purtroppo a me serve come come parametro e non come return.
Di seguito un esempio.
double *calcola (double *ptr)
{
ptr = calloc (10, sizeof(double));
return ptr;
}
int main (int argc, char *argv[])
{
double *ptr1=NULL;
double *ptr2=NULL;
ptr2 =calcola(ptr1);
return 0;
}
Risolto Andare alla soluzione.
in data 05-21-2014 10:42 AM
Se devi ricevere indietro l'indirizzo dell'array devi passare alla funzione il puntatore al puntatore:
int calcola (double **ptr) { int error = 0; nullChk (*ptr = calloc (10, sizeof(double))); Error: return error; } int main (int argc, char *argv[]) { double *ptr = NULL; r = calcola (&ptr); return 0; }
in data 05-22-2014 12:56 AM
Grazie 1000 funziona.
in data 05-22-2014 01:37 AM
Ricordati anche di gestire nel chiamante un eventuale errore di allocazione, che la funzione restituisce come valore di ritorno. Questo ti permette di evitare successivi errori nell'accesso alla memoria in caso di problemi.
in data 05-22-2014 03:05 AM
Ok grazie