linux user group brescia

immagine del castello

Archivio della mailing list

Array e malloc

Bauno bauno a inwind.it
Mer 8 Maggio 2002 10:09:18 UTC
On Wednesday 08 May 2002 08:26, Maurizio Paolini wrote:
> OK, ok, ritiro.  Pero' mi risulta che dopo una dichiarazione "int
> a[10][10]" il compilatore accetti la quantita' "**a" che restituisce
> l'elemento in posizione [0][0].

Certamente, ma è una mera equivalenza sintattica. E, detto tra noi, penso che 
sia una pecca del C/C++, che genera una confusione spaventosa anche in 
persone relativamente esperte.

Comunque basta provare a compilare queste 5 righe:

-------begin-----------
#include <iostream.h>

void foo (int ** bar) {
        cout << bar[0][0] << endl;

}

int main (void) {

        int a[10][10];

        a[0][0] = 1;

	foo(a);

	return 0;
}
-------------end-------------

Ottengo, dal compilatore:


test.c: In function `int main ()':
test.c:22: cannot convert `int (*)[10]' to `int **' for argument `1' to
`foo (int **)'

Per la cronaca, la dichiarazione corretta è:

void foo (int (*bar)[10]) {
        cout << bar[0][0] << endl;

}




-- 
Bauno - Eurydices, oro, properata retexite fata!
"And we are here as on a darkling plain, swept with confused alarms
of struggle and fight, where ignorant armies clash by night" (MA)




Maggiori informazioni sulla lista Lug