scusa te ancora questo è il listato

#include<stdio.h>
int A(int *x) {
*x=(*x)-1;
return (*x);
}

int B(int x){
A(&x);
return 1+A(&x);
}

int main(void)
{
int x,y;
x=0; y=2;
printf("%d ; %d",B(x),A(&y));
}


non capisco int A(int *x) e sopratutto non capisco che significa A(&x)

che risultato dà questa funzione...??
grazie ciao