PDA

View Full Version : [C] Passaggio di una matrice ad una funzione


russo30
29-01-2007, 15:43
Ciao a tutti
Devo passare una matrice ad una funzione, ma ottengo un errore che non capisco.. ecco il codice:

chiamata nel main : unsigned char ImageDataMatrice[480][640];
VettoreMatrice(ImageDataVettore,ImageDataMatrice);

prototipo funzione: void VettoreMatrice(unsigned char *Vettore, unsigned char **Matrice)

L'errore che ottengo (Che in realtà è un warning, ma se faccio partire il programma questo non viene eseguito e viene chiuso in maniera anormale) è sul passaggio del secondo argomento:

[Warning] passing arg 2 of `VettoreMatrice' from incompatible pointer type

Quale è il problema????
grazie

Ziosilvio
29-01-2007, 16:07
Mi sa che non ti è chiarissima l'equivalenza tra puntatori e array.
Steve Summitt di C-FAQ.com la spiega molto meglio di quanto potrei fare io.
Dài un'occhiata QUI (http://c-faq.com/), e a questa sezione (http://c-faq.com/aryptr/index.html) in particolare.

russo30
29-01-2007, 16:27
mi dispiace ma non trovo niente di utile nel link che mi hai dato
grazie lo stesso

andbin
29-01-2007, 17:14
Devo passare una matrice ad una funzione, ma ottengo un errore che non capisco..
[...]
Quale è il problema????La prima cosa da capire è che:

tipo nome[N][M]

e

tipo **nome

non sono la stessa cosa, non sono equivalenti, non sono compatibili.

Il primo è un array bidimensionale a tutti gli effetti (un insieme contiguo di elementi).
Il secondo è un puntatore a puntatore a tipo. Che può essere sfruttato per gestire un array bidimensionale ma non del tipo classico. In pratica può essere usato per gestire un "array di array" tramite i puntatori.