Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    280

    [C] passaggio di array bidimensionalli

    Salve.. avrei un problema per quanto rigaurda il passaggio di un array bidimensionale..

    allora lo creo cosi
    int array[10][10];

    lo passo cosi alla funziona..
    array;
    &array[0][0];
    &array;

    e lo ricevo cosi dalla funzion..
    int *array2;
    int **array2;
    int *array[10][10];

    cmq ho provato + o - tutte le combinazioni e mi dice i dati passati/ricevuti alla funzione sono incompatibili..
    come passo questo array bidimensionale?
    anticipatamente grazie..

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    1,003
    Devi riceverlo con
    int array[10][10]

    poi passarglielo come vuoi (array, &array,&array[0][0]), occhio però che passi il puntatore all'array

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] passaggio di array bidimensionalli

    Originariamente inviato da magicofred
    Salve.. avrei un problema per quanto rigaurda il passaggio di un array bidimensionale..
    Se hai un array di questo tipo:
    codice:
    int array[10][10];
    Nella funzione che riceve l'array puoi dichiarare il parametro come:
    codice:
    a)  int arr[10][10]
    b)  int arr[][10]
    c)  int (*arr)[10]
    e passi semplicemente alla funzione array.
    Nota che passare &array o &array[0][0] è sbagliato! Al massimo va bene &array[0].
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    1,003

    Re: Re: [C] passaggio di array bidimensionalli

    Originariamente inviato da andbin
    Nota che passare &array
    Perchè? Tanto il compilatore associa ad 'array' un indirizzo (non alloca niente in memoria), quindi dire array o &array è la stessa cosa (è come chiedere l'indirizzo dell'indirizzo, un controsenso ma il compilatore lo accetta lo stesso)

    Ciao

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [C] passaggio di array bidimensionalli

    Originariamente inviato da tia86
    Perchè? Tanto il compilatore associa ad 'array' un indirizzo (non alloca niente in memoria), quindi dire array o &array è la stessa cosa (è come chiedere l'indirizzo dell'indirizzo, un controsenso ma il compilatore lo accetta lo stesso)
    Sì ... ma il compilatore ti segnalerebbe un bel warning! (se hai i warning attivati, ovviamente).

    Dire:
    codice:
    a)  array
    b)  &array
    c)  &array[0][0]
    è indubbio che si ottiene lo stesso indirizzo, e cioè l'indirizzo del primo elemento. Ma il tipo, tecnicamente, è diverso!!!

    Mi spiego meglio. Se la funzione è definita:
    codice:
    void func (int arr[10][10])
    solo passare array è giusto, perché gli altri due:
    codice:
    b)  &array è di tipo int (*)[10][10]
    c)  &array[0][0] è di tipo int *
    Da lì il warning ("incompatible pointer type" o qualcosa del genere a seconda del compilatore).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.