|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
[C] Puntatore matrice
Ciao
Perché non è possibile utilizzare un puntatore (con il doppio indice) negli array bidimensionali? Mi spiego meglio Codice:
int arr[5]; //Il nome "arr" non è altro che un puntatore all'elemento arr[0]. int *puntatore=&arr[0] //arr[0]==puntatore[0]), arr[1]==puntatore[1]) ecc. Codice:
int matrice[2][3]={2,3,4,5,6,7}; int *puntatore=&matrice[0][0]; printf("%d", puntatore[2][3]); //genere un errore: "subscripted value is neither array nor pointer " |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Oct 2011
Messaggi: 3
|
matrice[0][0] è di per se un puntatore.. prova togliendo la &
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
no, matrice[0][0] non è un puntatore ma direttamente il valore puntato
è matrice che è un puntatore all'elemento matrice[0][0] matrice==&matrice[0][0] |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Codice:
int matrice[2][3]={2,3,4,5,6,7}; int *puntatore=&matrice[0][0]; printf("%d", puntatore[2][3]); //genere un errore: "subscripted value is neither array nor pointer "
__________________
Concluso con:... Ultima modifica di Floris : 20-10-2011 alle 14:49. |
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
Quote:
il puntatore matrice di che tipo è? Ultima modifica di biowep : 20-10-2011 alle 14:38. |
|
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Quote:
*matrice ha tipo int* e punta al primo elemento ([0][0]). Il primo elemento ([0][0]) della matrice lo puoi quindi ottenere con **matrice. Il puntatore a [0][1] è invece *matrice+1 e quindi *(*matrice+1) è l'elemento [0][1]. Il puntatore a [1][0] è *(matrice +1) e quindi **(matrice +1) è l'elemento [1][0]. La regola è: Quote:
__________________
Concluso con:... Ultima modifica di Floris : 20-10-2011 alle 14:56. |
||
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
grazie della risposta
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
vorrei precisare, onde evitare confusione, che i puntatori sono puntatori e gli array restano array, sono 2 cose diverse e separate, la "cosa" che hanno in comune è che entrambi rispondono all'aritmetica dei puntatori.
nel complesso è scorretto dire che una scritta del tipo Codice:
matrice[i][j] |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
matrice è un puntatore nel senso che la locazione di memoria ad esso assegnata contiene un indirizzo di memoria e non un dato primitivo. matrice[i][j] per ogni i,j, invece è un intero.
__________________
Concluso con:... Ultima modifica di Floris : 22-10-2011 alle 11:11. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:04.