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
|