[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