|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2003
Città: Roma
Messaggi: 76
|
puntatori in C
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. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2000
Città: Ferrara
Messaggi: 2002
|
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...
__________________
Ryzen 5 5600X, 32GB DDR4-3000MHz, Asrock B550M-Pro4, Case Fractal Design Dfine Mini, SSD Samsung 980Pro 500GB |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2003
Città: Roma
Messaggi: 76
|
Bellissimo!!!
ma int **x sono due puntatori con lo stesso nome? |
|
|
|
|
|
#4 | |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16214
|
Quote:
La dichiarazione: Codice:
int **x; La variabile è sempre una sola. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2000
Città: Ferrara
Messaggi: 2002
|
** è 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 ...
__________________
Ryzen 5 5600X, 32GB DDR4-3000MHz, Asrock B550M-Pro4, Case Fractal Design Dfine Mini, SSD Samsung 980Pro 500GB |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:30.



















