|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
[C] Puntatori
Mi potete dire se ci sono errori in questo codice:
funzione1(int *a, int *b, int *c); funzione2(int *a,*b); funzione3(int *c); main() { int a,b,c; funzione1(&a,&b,&c); } funzione1(int *a, int *b, int *c) { funzione2(&a, &b); funzione3(&c); if(*a>*b) *c=*b; } Ho dei problemi con i puntatori in un programma e non ne capisco il motivo. |
|
|
|
|
|
#2 | |
|
Member
Iscritto dal: Nov 2005
Messaggi: 154
|
Quote:
|
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Quote:
Perchè nel programma che sto facendo non capisco il motivo per cui a volte necessito di passare una variabile a una funzione con la & davanti e altre volte no. Il codice sopra per quanto riguarda l'uso dei puntatori ha degli errori? |
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Nov 2005
Messaggi: 154
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
nel codice che hai dato
- due funzioni sono dichiarate ma non definite, quindi non si compila nulla - i prototipi delle due funzioni che mancano non sono coerenti con il loro utilizzo quando sei dentro a funzione1 a è di tipo int* (puntatore a intero), non è un intero. quindi quando passi &a (l'indirizzo di a) non stai passando un puntatore a intero, bensì l'indirizzo della tua variabile a . dato che a è già un puntatore passi un puntatore a puntatore, quindi il prototipo corretto è con i paramentri di tipo int** (puntatore a puntatore a intero). per passare l'indirizzo della variabile intera che hai nel main dentro a funzione1 basta passare a che è già un indirizzo. la deferenziazione sul maggiore e sull'uguale invece è corretta. ciao |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Nov 2005
Messaggi: 154
|
Quote:
|
|
|
|
|
|
|
#8 | |||||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
Quote:
Quote:
Quote:
Quote:
inoltre presumo che prima di compilare tu abbia scritto anche l'implementazione di funzione2 e funzione3... |
|||||
|
|
|
|
|
#9 | |
|
Member
Iscritto dal: Nov 2005
Messaggi: 154
|
Quote:
quoto, mi era sfuggito
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Ciao grazie a tutti delle risposte.
Questo codice non l'ho ovviamente compilato, ho buttato giù un paio di righe per esporre il concetto che non riuscivo a capire ma non sono riuscito a spiegarmi bene. Il codice delle ultime funzioni non l'ho nemmeno scritto perchè non era una parte che mi interessava. Il mio dubbio era questo: se io passo una variabile per indirizzo a una funzione e questa funzione richiama un'altra funzione devo passare anche a quest'ultima quando la chiamo la variabile per indirizzo? La risposta era no, questo era il dubbio cmq grazie a tutti. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:04.











quoto, mi era sfuggito







