View Full Version : [C] Passaggio dei parametri per riferimento o valore?
manowar84
17-04-2011, 22:43
Salve a tutti! stavo dando una occhiata al c che non l'ho mai toccato ... mi servirebbe una info abbastanza al volo, il passaggio dei parametri avviene tramite riferimento o valore? Mi pare di capire per valore ma volevo la conferma dagli esperti :D
grazie a tutti e scusate la domanda estremamente banale :)
Salve a tutti! stavo dando una occhiata al c che non l'ho mai toccato ... mi servirebbe una info abbastanza al volo, il passaggio dei parametri avviene tramite riferimento o valore? Mi pare di capire per valore ma volevo la conferma dagli esperti :D
grazie a tutti e scusate la domanda estremamente banale :)
nel C esistono entrambe le possibilità, in particolare:
- una funzione può ritornare per valore solo 1 valore al massimo
- i vettori vengono sempre passati per riferimento
- le variabili atomiche vengono passate per valore
studiando un po' meglio ti rendi conto che alla fine neanche il passaggio per valore esiste davvero, ma sono tutti passaggi per riferimento.
nel C esistono entrambe le possibilità, in particolare:
- una funzione può ritornare per valore solo 1 valore al massimo
- i vettori vengono sempre passati per riferimento
- le variabili atomiche vengono passate per valore
studiando un po' meglio ti rendi conto che alla fine neanche il passaggio per valore esiste davvero, ma sono tutti passaggi per riferimento.
La notazione per riferimento o per valore non mi è mai piaciuta, è confusionaria e spesso inesatta da un punto di vista pratico.
In C dato che non hai oggetti (al massimo strutture) puoi passare due tipi di dato nelle funzioni:
- tipi di dato built-in (int, double, float, char)
- puntatori ai tipi di dato
In entrambi i casi stai operando con una copia di tali valori, ciò che puoi farci è diverso, ma di fatto all'interno della funzione hai una copia di tali valori.
Il caso degli array è un caso particolare perché di fatto passi il puntatore al primo elemento dell'array.
Ovvero:
int test()
{
int a[] = {1, 2, 3, 4};
return a == &a[0];
}
Test restituisce sempre true.
manowar84
18-04-2011, 11:39
ragazzi siete fantastici, mi avete chiarito tutto, grazie mille per la vostra gentilezza :)
studiando un po' meglio ti rendi conto che alla fine neanche il passaggio per valore esiste davvero, ma sono tutti passaggi per riferimento.semmai è il contrario :asd:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.