Linuxtrent: Re: C question

  • From: Lele Gaifax <lele@xxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Tue, 6 Nov 2001 12:29:44 +0100

>>>>> On Sun, 4 Nov 2001 14:17:11 +0100, Daniele Nicolodi <daniele@xxxxxxxxxx> 
>>>>> said:

    DN> Come si fa ad allocare dinamicamente un array bidimensionale
    DN> ??

    DN> Io faccio:

    DN> int * vb; vb = (int *)malloc(3*3*sizeof(int));

    DN> per allocare un vettore 3x3 di interi.  Funziona ma il gcc mi
    DN> da un sacco di warning se lo uso come parametro di una
    DN> funzione del tipo:

    DN> int somma(int m[][3])

    DN> Quale e` il modo corretto ??

`int *' non è equivalente a `int [][]'. Tecnicamente una matrice in C
è un vettore di vettori, un vettore è un puntatore, quindi una matrice
è un puntatore a un puntatore...

Se la matrice ha dimensioni note, io userei un typedef:

    typedef int matrice[NRIGHE][NCOLONNE];

    int
    somma (matrice m)
    {
    }

L'alternativa è usare una variabile `int **m' e andare di cast quando
serve.

ciao, lele.
-- 
nickname: Lele Gaifax   | Quando vivro' di quello che ho pensato ieri
real: Emanuele Gaifas   | comincero' ad aver paura di chi mi copia.
email: lele@xxxxxxxxxx  |               -- Fortunato Depero, 1929.

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: