è sempre preferibile evitare l'uso di quelle ke tu kiami "matrici"Originariamente inviato da Skywalker87
Salve a tutti,
in questi giorni mi sono ritrovato spiazzato dal fatto di non riuscire a passare ad una funzione una matrice come argomento. Ho provato a trattarla come un array monodimensionale:
E ho provato con un puntatore:codice:void funz(int mat[][]) { ... } void main() { int mat[4][4]; funz(mat); ... }
Ma niente.. come si fa?! Grazie Mille!!codice:void funz(int *p) { ... } void main() { int mat[4][4]; int *p = mat; funz(p); ... }
in C / C++ quando definisci un array bidimensionale statico es. mat[4][4] crei un "vettore" di puntatori.. quindi mat è un puntatore a puntatore, motivo per cui quando assegni
int* p = mat ... crei un casino
una prima possibilità sarebbe definire l'argomento come puntatore a puntatore intero, ovvero:
void funz(int** p)
cmq in ogni modo in C / C++ non ti conviene usare gli array bidimensionali statici
(per intenderci matrice[x][y])
piuttosto ti conviene usare un vettore classico del tipo
matrice[dim]
dove dim rappresenta il prodotto x y (cioè il numero di righe per il numero delle colonne)
puoi dunque immaginare di aver "tagliato" la matrice e di averla scomposta nelle sue colonne.. mi sono spiegato?
quindi, se ad esempio hai una matrice 2x3 tipo:
1 2 3
4 5 6
puoi memorizzarla come:
1
2
3
4
5
6
e accedere in maniera intelligente al vettore creato.. :ignore: se non sono stato chiaro invia un altro post
ciao!![]()