Ciao ragazzi,
mi scuso per l'ennesimo post che riguarda il C. Pensavo di aver dominato certe questioni (tipo i puntatori), ma evidentemente i miei segmentation faults dicono il contrario...
Ecco il codice (la parte fastidiosa)
struct svd_result{
double *eigen_val;
double *u;
double *v;
};
void cb_svd(struct svd_result *svd_res, double *X, int *nrX, int*ncX)
{
double ini_eigen_val[*ncX], ini_u[*nrX**ncX], ini_v[*nrX**ncX], *rv1, ini_rv1[*ncX];
svd_res->eigen_val=&ini_eigen_val[0];
....
}
Quindi vedete che ho fatto una struttura che contiene dei puntatori. La funzione cb_svd ha come primo argomento un puntatore a struttura. Nella prima riga della funzione creo degli array che serviranno da "presta-indirizzo" ai puntatori contenuti nella struttura puntata. Come di consueto, almeno da come ho imparato io casarecciamente, i puntatori li faccio puntare ad un array e poi utilizzo questi benedetti puntatori in modo ooportuno. Non capisco perchè al C la riga
svd_res->eigen_val=&ini_eigen_val[0];
non piace...qualcuno ha qualche indizio?
Vi dico già che presagisco che una volta chiamata la funzione più di una volta i risultati salvati in res_svd verranno sovrascritti, ma mi da estremo fastidio non capire cosa c'è che non va in questa mia funzione.
mi scuso per l'ennesimo post che riguarda il C. Pensavo di aver dominato certe questioni (tipo i puntatori), ma evidentemente i miei segmentation faults dicono il contrario...
Ecco il codice (la parte fastidiosa)
struct svd_result{
double *eigen_val;
double *u;
double *v;
};
void cb_svd(struct svd_result *svd_res, double *X, int *nrX, int*ncX)
{
double ini_eigen_val[*ncX], ini_u[*nrX**ncX], ini_v[*nrX**ncX], *rv1, ini_rv1[*ncX];
svd_res->eigen_val=&ini_eigen_val[0];
....
}
Quindi vedete che ho fatto una struttura che contiene dei puntatori. La funzione cb_svd ha come primo argomento un puntatore a struttura. Nella prima riga della funzione creo degli array che serviranno da "presta-indirizzo" ai puntatori contenuti nella struttura puntata. Come di consueto, almeno da come ho imparato io casarecciamente, i puntatori li faccio puntare ad un array e poi utilizzo questi benedetti puntatori in modo ooportuno. Non capisco perchè al C la riga
svd_res->eigen_val=&ini_eigen_val[0];
non piace...qualcuno ha qualche indizio?
Vi dico già che presagisco che una volta chiamata la funzione più di una volta i risultati salvati in res_svd verranno sovrascritti, ma mi da estremo fastidio non capire cosa c'è che non va in questa mia funzione.