Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    [C] Dimensione matrice nel passaggio ad una funzione

    Salve a tutti. Ho un dubbio che mi assilla da tempo, ma non trovo risposta ne online ne su questo forum ne sul mio libro di testo, cosa molto strana
    Perchè quando si passa una matrice ad una funzione, la prima dimensione si lascia vuota?

    Esempio:
    codice:
    void elaborazione(int matrice[][COLONNE]);
    Qualcuno sa spiegarmelo?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' possibile non specificare la prima dimensione, non è obbligatorio. Puoi indicare sia la prima che la seconda, ad esempio

    void elaborazione(int matrice[RIGHE][COLONNE]);

    Il fatto è che, se omessa, può essere ottenuta facilmente dal compilatore (che sa quanto è grande la matrice e come sono organizzate tutte le altre dimensioni).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Ah ok, grazie oregon. A quanto mi aveva fatto capire il professore, sembrava obbligatorio non doverla mettere

  4. #4
    Quando passi un array ad una funzione stai passando in realtà il puntatore alla prima zona di memoria dove quell' array è stato memorizzato .
    Pertanto se hai una funzione che prende un Array come input puoi tranquillamente scrivere :

    codice:
    void doubleof(int *ilmioarray);
    Se intendi passargli un array di Interi .

    Quindi pui tranquillamente implementare il metodo in questa maniera

    codice:
    void doubleof(int *ilmioarray)  {       int j;       for(j=0; j<5; j++)           ilmioarray[j] = ilmioarray[j]*2;  }

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da kerbero1984
    Quando passi un array ad una funzione stai passando in realtà il puntatore alla prima zona di memoria dove quell' array è stato memorizzato .
    Pertanto se hai una funzione che prende un Array come input puoi tranquillamente scrivere :

    codice:
    void doubleof(int *ilmioarray);
    Se intendi passargli un array di Interi .

    Quindi pui tranquillamente implementare il metodo in questa maniera

    codice:
    void doubleof(int *ilmioarray)  {       int j;       for(j=0; j<5; j++)           ilmioarray[j] = ilmioarray[j]*2;  }
    Non è proprio così per un array a più dimensioni, che era ciò di cui si parlava ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Il fatto è che, se omessa, può essere ottenuta facilmente dal compilatore (che sa quanto è grande la matrice e come sono organizzate tutte le altre dimensioni).
    Permettimi di correggerti...al compilatore non interessa proprio l'altra dimensione.
    Quando passiamo un array bidimensionale [][], passiamo il puntatore (ok...), che non è altro che il puntatore a un array unidimensionale.
    Per accedere tramite due indici a un array unidimensionale pensandolo come bidimensionale basta sapere solamente una dimensione, se passiamo l'altra viene semplicemente ignorata.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    Originariamente inviato da ardito86

    Per accedere tramite due indici a un array unidimensionale pensandolo come bidimensionale basta sapere solamente una dimensione, se passiamo l'altra viene semplicemente ignorata.
    é uno scioglilingua ?

  8. #8
    Originariamente inviato da roldo
    é uno scioglilingua ?
    No.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.