what is the difference between
func(int* a) //and func(int *a)
also what is the difference between
func(int& a) //and fun