|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Oct 2002
Messaggi: 567
|
[C] Array di Puntatori
Ciao ragazzi...sto impazzendo su una cosa.
Ho un array tridimensionale dichiarato in questo modo long array3d[2][100][1000]; e poi ho un array di puntatori dichiarato in questo modo long *punt_array[1000]; allora io vorrei passare una dimensione del primo array come puntatore nel secondo... cioè una cosa di questo tipo: punt_array=array3d[0][2]; è possibile fare una cosa del genere? Grazie e ciao ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
si dovrebbe fare così:
Codice:
for (i=0; i<1000; ++i) punt_array[i]= &array3d[0][2][i]; ![]() |
![]() |
![]() |
![]() |
#3 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Vuoi passare la dimensione di un array come valore?
Non vorrei sbagliare, ma si può fare solo se l'array è monodimensionale: in questo caso, il metodo è: Codice:
size = sizeof(a)/sizeof(a[0]);
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Oct 2002
Messaggi: 567
|
no no non voglio passare la sua dimensione...bensì voglio che ogni indice del puntatore di array punti all'indice della tabella passata. Esempio
*punt_array[1] deve contenere lo stesso valore di array3d[0][2][1]. *punt_array[100] deve contenere lo stesso valore di array3d[0][2][100]. e così via.... praticamente mi serve perchè in una funzione devo passare un array, e devo modificarlo... |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#6 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Anzitutto, chiedo scusa per aver frainteso.
Poi: sì, allora mi sa che quello che vuole fare cagnulein si può fare, tra l'altro proprio come ha detto VegetaSSJ5. Motivo: se array3D è un array di array di array di int, e punt_array è un array di int, allora punt_array[n] e array3D[j][k][n] sono int per ogni valore "lecito" di n, j e k. Il codice di cagnulein fa un'altra cosa lecita, ossia scrive in punt_array l'indirizzo di array3D[j][k], che ovviamente è un array di int: in questo modo è possibile modificare i valori di array3D[j][k][n] per mezzo di una funzione con un codice del tipo: Codice:
void set(int val, int *arr, int loc) { arr[loc] = val; } /* bla bla bla */ set(valore,array3D[j][k],indice); (Il link è in un mio post nella terza pagina del thread sui migliori libri di programmazione.)
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Oct 2002
Messaggi: 567
|
grazie, ora proverò
![]() |
![]() |
![]() |
![]() |
#8 |
Bannato
Iscritto dal: Oct 2002
Messaggi: 567
|
grassie, funsiona
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:48.