poprawny sposób zmiany wartości wskaźników c

Niestety, kolejne pytanie wskaźnika C .. Mam funkcję func () sortującą tablicę, a następnie największą i najmniejszą liczbę całkowitą. Próbuję umieścić je wewnątrz zmiennych wskaźnikowych w main (), ale wartości są poprawne tylko wewnątrz funkcji func (). Nie rozumiem dlaczego :(

#include <stdio.h>

void func(int arr[], int *s, int *l, int n){
    int i = 1;
    for(; i < n; i++){
        int temp = arr[i];
        int n = i;
        while( n > 0 && arr[n-1] > temp){
            arr[n] = arr[n-1];
            n--;
        }
        arr[n] = temp;
    }
    l = &arr[n-1];
    s = &arr[0];\
    printf("%d %d\n",*l,*s);
}

int main(void){
    int arr[] = {1,2,9,3,58,21,4};
    int *s, *l;
    int size = 7;
    func(arr,s,l,size);
    printf("%d %d\n",*l,*s);
} 

questionAnswers(3)

yourAnswerToTheQuestion