[RISOLTO] Funzioni con array bidimensionali come argomenti

di Anonimizzato17016 il
5 risposte
Salve, sto avendo dei problemi nel passare come argomento di funzione array bidimensionali.

So che un comando del tipo:

const int COLONNE = 5;
<nome funzione> (int matrice[][COLONNE], int righe)
{
.........
}
int main ()
{
..............................................
<nome funzione>(matrice, righe)
.................................................
}

funziona, mi interesserebbe sapere però in che modo posso passare un array bidimensionale come argomento di funzione senza necessariamente dichiarare in partenza il numero delle colonne, in modo che di volta in volta nell'esecuzione del programma l'utente possa scegliere liberamente le due dimensioni della matrice. Ho fatto dei tentativi, ma senza successo.
Altra cosa, ancora più spinosa: una volta che so fare questo, come faccio la stessa cosa con un array bidimensionale frastagliato?

Grazie anticipatamente a chi risponderà

5 Risposte

  • Non puoi farlo, perché in realtà tu passi alla funzione il puntatore al primo elemento del vettore di puntatori.

    Esempio di prototipo:
    void fun(int **matr, int r, int c);
  • Non ti seguo bene, scusami.
    La prima frase è riferita al caso degli array frastagliati e il prototipo invece al caso "standard" di array bidimensionale non frastagliato?
  • Il prototipo è riferito al passaggio di parametri di una matrice, senza dover indicare il numero di colonne.
    "Un array bidimensionale frastagliato" non hai modo di scandirlo nel senso che intendi tu, a meno di usare dei trucchetti per passare la lunghezza delle singole righe della matrice.
  • Una possibile soluzione molto semplice: insieme alla matrice passi anche un vettore che contiene le lunghezze delle varie righe.
  • Capito, grazie!
Devi accedere o registrarti per scrivere nel forum
5 risposte