[Tech] Nuova domanda di C
Simone Piccardi
piccardi@firenze.linux.it
Mer 9 Giu 2004 11:12:54 CEST
On Wed, 2004-06-09 at 09:29, Valerio Montagnani wrote:
> float **features;
>
> allocato:
> features=(float **)malloc(4*sizeof(float*)*4*sizeof(float*));
>
> e così funziona come dicevi.
Allora cerco di spiegarmi meglio, in C le matrici sono semplicemente dei
vettori con 2 indici (cioe` hai un puntatore a float che indicizzi con
due variabili). Qui features sarebbe una specie di puntatore a float.
Ma c'e` un piccolo e non banale problema ... Il C non supporta (non
ancora, la feature e` stata prevista ma ha delle problematiche non
banali) matrici con indici indefiniti. Dovresti usare una dichiarazione
del tipo features[*][*], che il GCC ancora non digerisce.
Pero` puoi realizzare la matrice anche come un vettore di vettori
contenente le righe, nel qual caso features e` float **. Ma allora prima
devi allocare un vettore di puntatori (alle righe della matrice) a float
e poi inizializzare questi con il puntatore alla singola colonna.
> Ora voglio riempire la matrice con dei valori.
> Non posso però, trattare il vettore features come una matrice e così non riesco a riempirlo.
Certo che no, non e` una matrice.
Per tagliare la testa al toro allego esempio (commentata la parte come
dovrebbe essere se ci fossero le matrici con gli indici variabili).
E` stato scritto di fretta, per cui prendere "cum grano salis".
Ciao
Simone
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: matrici.c
Tipo: text/x-csrc
Dimensione: 625 bytes
Descrizione: non disponibile
URL: <http://lists.linux.it/pipermail/flug-tech/attachments/20040609/9d61954f/attachment.c>
Maggiori informazioni sulla lista
flug-tech