Ciao a tutti, in questi giorni sto studiano la programmazione in c++ e oggi, affrontando l'argomento puntatori, mi sono imbattuto in un esercizio che non riesco a risolvere.

In pratica devo inserire all'interno di un array dei valori, poi chiamo una funzione che riceve due parametri: double* p, int n, dove p e' il puntatore alla testa dell'array e n e' la lunghezza dell'array.
Questa funzione deve trovare il valore minimo dell'array e ritornare alla funzione main, l'indirizzo del valore minore. Ho cosi' svolto l'esercizio:

codice:
#include <iostream>
using namespace std;

double* min (double* a, int n);

int main ()
{
	int n;
	double* p;
	cout << "Inserire la dimensione dell'array" << endl;
	cin >> n;
	double a[n];
	p = a;
	cout << "Inserire " << n << " valori nell'array" << endl;
	for (int i=0; i<n; ++i)
	{
		cin >> a[i];
	}
	cout << endl;
        p = min (&p, a);
	cout << "L'indirizzo dell'elemento minore e': " << p << endl;
	return 0;
}

double* min (double* p, int n)
{
	double min = a[0];
	double* add_min = a;
	for (int i=1; i<n; ++i)
	{
		if(a[i]<=min)
		{
			min=a[i];
			add_min=&a[i];
		}
	}
	return add_min;
}
quando provo a compilare il codice, mi viene generato quest'errore:

codice:
array_punt.cc: In function ‘int main()’:
array_punt.cc:20:13: error: no matching function for call to ‘min(double**, int&)’
array_punt.cc:20:13: note: candidates are:
array_punt.cc:4:9: note: double* min(double*, int)
array_punt.cc:4:9: note:   no known conversion for argument 1 from ‘double**’ to ‘double*’
/usr/include/c++/4.6/bits/stl_algobase.h:233:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
/usr/include/c++/4.6/bits/stl_algobase.h:187:5: note: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
potete aiutarmi?