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]<<" ";

}