Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567

    [C] Array multidimensionali e funzioni

    Non ho assolutamente capito come passare array multidimensionali a funzioni... o meglio, ci sono riuscito ma con un metodo che non mi sembra molto ortodosso.

    Io faccio così:

    codice:
    void carica(int i, int j, int* a, int n, int x)
    {
    *(a+i*n+j)=x;
    }
    
    main()
    {
    int A[2][2], x, i, j;
    x=0;
    for (i=0; i<2; i++)
    {
    for (j=0; j<2; j++)
    	{
    	carica(i,j,&A[0][0],2,x);
    	x=x+1;
    	}
    }
    exit(0);
    }
    cioè passo l'indirizzo di A[0][0] e poi trovo l'elemento (i,j) come *(&A[0][0]+i*n+j) dove n=numero di colonne.

    C'è un metodo un po' più semplice ed elegante per fare la stessa cosa?


    E un'altra domanda: come faccio a passare come parametri valore un array, che sia monodimensionale o multidimensionale, ad una function?

    la dichiarazione della function la conosco ( void f(int a[]) - void f(int a[][10]) ) ma non ho capito come si richiama la funzione


    Grazie e
    "Come vedi tutto è usuale, solo che il tempo chiude la borsa e c'è il sospetto che sia triviale l'affanno e l'ansimo dopo una corsa, l'ansia volgare del giorno dopo, la fine triste della partita, il lento scorrere senza uno scopo di questa cosa che chiami vita."

  2. #2
    Passalo cosi...

    int miaFunzione (int A[][2]);

    cosi' avrai passato una matrice (Devi specificare il numero di Colonne)
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  3. #3
    Matrici
    void funzione (int matrix[][2]);

    si richiama :
    int matrix[2][2];
    funzione (matrix);

    -------------------------
    Array
    void funzione (int *array);

    si richiama :
    int array[2];
    funzione (array);
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  4. #4

    Esempi

    M A T R I C I :
    codice:
    void funzioneMatrice(int matrix[][2]) {
          // Fai Quello che vuoi
    }
    
    int main() {
         int matrix[2][2];
    
         funzioneMatrice(matrix);
    
         return 0;
    }

    A R R A Y MONODIMENSIONALI
    codice:
    void funzioneArray(int array[]) {
          // Fai Quello che vuoi
    }
    
    void funzione2Array(int *array) {
          // Fai Quello che vuoi
    }
    
    int main() {
         int matrix[2][2];
    
         funzioneArray(array);
         funzione2Array(array);
    
         return 0;
    }
    Passare un array con (int *array) o con (int array[])
    e' la stessa cosa...

    cmq quando passi vettori e/o matrici ti conviene anche passargli le dimensioni..(Per le dim usa le costanti)

    Es. Stampa Vettore
    codice:
    void stampaArray (int *array, int dim) {
        int i;
        for (i=0; i < dim; i++) {
            printf ("%d ", array[i]);
        }
    }
    
    int main() {
         int array[3] = {0,1,2};
         stampaArray(array, 3);
         return 0;
    }
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567
    ok capito, grazie mille
    "Come vedi tutto è usuale, solo che il tempo chiude la borsa e c'è il sospetto che sia triviale l'affanno e l'ansimo dopo una corsa, l'ansia volgare del giorno dopo, la fine triste della partita, il lento scorrere senza uno scopo di questa cosa che chiami vita."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.