Passaggio per indirizzo o per valore ?
In questo esempio l’array passato alla funzione void va(int *); viene passato per indirizzo o per valore ?
#include<iostream> using namespace std; void val(int *v) { for(int i=0;i<5;i++) *(v+i)=i; } int main() { int *k=new int[5]; val(k); for(int i=0;i<5;i++) cout<<k[i]<<" "; }
E’ ovvio che, trovandosi l’array valorizzato, il valore sembrerebbe passato per indirizzo; in realtà viene passato per valore, ma siccome il valore di un puntatore è un indirizzo è come fosse passato per indirizzo.
Anche in questo codice l’array k si trova valorizzato. Perché anche se v++ va avanti, k continua a puntare all’inizio. Quindi v++ va avanti e valorizza ma k punta all’inizio
#include<iostream> using namespace std; void val(int *v) { for(int i=0;i<5;i++) *(v++)=i; } int main() { int *k=new int[5]; val(k); for(int i=0;i<5;i++) cout<<k[i]<<" "; }
