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:

codice:
void funz(int mat[][]) {
	...
}

void main() {
	int mat[4][4];

	funz(mat);
	...
}
E ho provato con un puntatore:

codice:
void funz(int *p) {
	...
}

void main() {
	int mat[4][4];
	int *p = mat;

	funz(p);
	...
}
Ma niente.. come si fa?! Grazie Mille!!
è sempre preferibile evitare l'uso di quelle ke tu kiami "matrici"
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!