PDA

View Full Version : puntatori in C


danieloide
18-12-2003, 21:35
int *x;
x = (int *) malloc(10 * sizeof(int));

Allocando questa grandezza il puntatore può essere elaborato come un array monodimensionale.

Ora mi chiedevo come posso elaborare un array bidimensionale con la notazione dei puntatori ma che non sia di questo tipo:

int (*x) [10];
x = (int *) malloc(10 * sizeof(int));

Questo potrebbe essere interpretato come un array bidimensionale (10 righe * 20 colonne), sulle righe ho allocato una grandezza per 10 interi ma per le colonne non posso farlo, almeno credo.

Come posso allocare memoria sia per le righe che per le colonne?

Spero di essere stato chiaro.

Berno
18-12-2003, 21:44
int **x,i;

x=(int**)malloc(10*(sizeof(int*));

for(i=0;i<10;i++) x[i]=(int*)malloc(10*(sizeof(int));

dopo di che puoi accedere all'array con la notazione array[x][y] come sei abituato a fare...

danieloide
18-12-2003, 21:50
Bellissimo!!!:p :p :p
ma int **x sono due puntatori con lo stesso nome?

Ziosilvio
18-12-2003, 22:02
Originariamente inviato da danieloide
ma int **x sono due puntatori con lo stesso nome?


No.
La dichiarazione:
int **x;
dichiara x come puntatore a puntatore a int.
La variabile è sempre una sola.

Berno
19-12-2003, 01:13
** è un puntatore doppio...

**x è un puntatore ad un array monodimensionale di puntatori ad int (int*)...

A sua volta ogni int* punta ad un vettore di interi...

Guarda la lezione 9 di laboratorio di programmazione, i disegnini aiutano molto a capire http://hydra.fe.infn.it/spizzo/programmazione/main.php ...