Check the comments.
#include <stdio.h>
int f1(int *x,int y)
{
y++; // incrementing y, which was 5, to 6.
(*x)++; // incrementing the value-at-address-x, which was 10, to 11
return *x+y; // add value-at-address-x, 11, and value of y, 6 == 17, return that.
}
int main(void) //correct signature of main in hosted environment
{
int x=10,y=5;
int z=f1(&x,y);
//any changes made to the value stored at address x will reflect here,
// any changes made to the value of y will be local to the function call.
printf("x=%d y=%d z=%d\n",x,y,z);
// updated x, unchanged y, and returned z.
}