|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2000
Messaggi: 279
|
[C]Array Multidimensionale
dunque...nessun problema nel dichiararli!
int a[1][1]; Il vero problema sono le funzioni che devono accettare come parametro un array multidimensione a prescindere dalla dimensione come le dicchiaro?? int funz(int **a) oppure int funz(int *a[]) Giusto?? e' lecito?? ...il problema è chiamare la funzione..che cosa gli devo passare senza far scattare il warning del compilatore?? e come recupero poi i valori all'interno della funzione?? avevo pensato che dato che anche nella dichiarazione s[][] si assume s come puntatore bastasse usare (per richiamare i valori) int r = a[i][j]...invece non funziona e neppure int r = (*(*(a+i)+j)); mi date una mano??
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Strano dovrebbe funzionare denza problemi...
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
|
Quando passi un array bidimensionale devi passare anche la seconda dimensione
Codice:
int Funz(int array_bid[][DIM2]) {}
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school Wind FTTE Vula 100/20 - Stats Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX |
![]() |
![]() |
![]() |
#4 | |||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Nel senso che non è possibile definire una funzione, che abbia tra i suoi parametri un array di dimensione arbitraria: questo semplicemente perché tipo, array di tipo, array di array di tipo, e così via, sono tutti tipi a due a due diversi. Forse si potrebbe fare usando una lista variabile di argomenti, ma ho parecchi dubbi in proposito... Quote:
Ti redirigo sulle FAQ per il linguaggio C a cura di Steve Summitt, che sono un punto di riferimento. Quote:
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|||
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non avevo visto che il vettore bidimensionale era allocato staticamente... Avevo presupposto il vettore bidimensionale allocato dinamicamente...in tal caso sia
int f1(int **t) { return t[1][1]; } che int f2(int *t[]) { return t[1][1]; } vanno bene... |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2000
Messaggi: 279
|
!
Grazie..però ve la siete cercata e ora vi sommergo di codice
![]() Codice:
int f1(int **t) { return t[1][1]; } int main(int argc, char *argv[]) { int a[3][3]; a[1][1]=5; f1(a); system("PAUSE"); return 0; } A runtime crasha tutto. Codice:
int f1(int **t) { return t[0][0]; } int main(int argc, char *argv[]) { int a[1][1]; int **t; t=a; a[0][0]=5; f1(t); system("PAUSE"); return 0; } poi non lo so.. potrei provare a puntare al primo elemento..mmmmm... un aiutino?? ah..a tutto ciò si aggiunge questa nota nelle FAQ che mi avete consigliato: Quote:
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero Ultima modifica di Mezzetti0903 : 10-05-2005 alle 18:31. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:12.