Ciao a tutti,

sto svolgendo un'esercizio :"Scrivete una funzione con prototipo int *smallest( int a[], int n ) che, dato un array a di lunghezza n, restituisca
un puntatore all’elemento più piccolo dell’array."

ecco il codice che ho scritto:

#include <stdio.h>

#define N 10



int *smallest (int a[], int n) {


int *p = &a[0];

int i;



for (i = 0; i < n; i++) {

if (a[i] < *p)

*p = a[i];

}

return p;
}



int main (void) {



int a[N], *p, i;



printf("^^^^*****Questo programma restituisce il più piccolo elemento di un array*****^^^^\n\n");

printf("Inserire 10 numeri: ");



for (i = 0; i < N; i++) {

scanf("%d", &a[i]);

}



*p = *smallest(a, N);



printf("Il più piccolo valore dell'array è: %d", *p);

}



in compilazione mi da il seguente errore:


^^^^*****Questo programma restituisce il pi� piccolo elemento di un array*****^^^^

Inserire 10 numeri: 1
2
3
4
5
6
7
8
9
10
Segmentation fault


Cosa significa?