为什么在调用函数里面不能更改主函数的值

为什么在调用函数里面不能更改主函数的值 为什么只能用指针来解决

#include<stdio.h>
int e(int*p1,int*p2,int*p3);
int main(){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    e(&a,&b,&c);
}
int e(int*p1,int*p2,int*p3){
    int t;
    if(*p1>*p2){
         if(*p2>*p3)
         printf("%d %d %d",*p1,*p2,*p3);
         else
        printf("%d %d %d",*p1,*p3,*p2);
    }
    if(*p2>*p3){
        if(*p3>*p1)
        printf("%d %d %d",*p2,*p3,*p1);
         else
        printf("%d %d %d",*p2,*p1,*p3);
    }
    if(*p3>*p2){
        if(*p2>*p1)
        printf("%d %d %d",*p3,*p2,*p1);
         else
        printf("%d %d %d",*p3,*p1,*p2);
    }
}


正常啊,毕竟各个函数的作用域也不一样,不用的指针的话也可以,定义成全局变量,这样每个函数就都能修改值了