View Single Post
Old 27-09-2002, 13:47   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Devi fornire informazioni sulla dimensione dell'array, oppure implementare una classe array apposita.
E' ovvio che dichiarare un array bidimensionale senza limiti non è ammissibile: i valori vengono memorizzati in sequenza dentro una struttura monodimensionale (la memoria), quindi se non sai quanto è lunga una riga come fai ad accedere ad una determinata colonna? Dichiarare il parametro come int ar[][21] (oppure int ar[21][], ora non so quale formalismo è quello giusto) fornisce al compilatore le informazioni necessarie per gestire l'array.
Nel caso che vuoi indicare esplicitamente le dimensioni dell'array puoi usare il formato
fnc(int *ar, int dx, int dy)
e accedere all'elemento x-y con ar[y*dx+x]. Un pò meno elegante ma funziona.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso