Hello I'm new in C/C++ and I don't why the following structure has a pointer in the function name.

struct node *pop(struct node *p, int *value)
{
struct node *temp;
if(p==NULL)
{
printf(" The stack is empty can not pop Error\n");
exit(0);
}
*value = p->data;
temp = p;
p = p->link;
free(temp);
return(p);
}


Can someone can tell me why the pop function has a pointer.
Thank you,
Enjoy your life