Hello..

I have some program's source that I do not fully understand.
Could someone please help me to explain/understand how pointers/arguments are passed betwen the functions:


Code:
class someclass {
public:
	char member;
};

void someotherfunc(ULONG_PTR *ptr) {
	//here it calls windows api GetQueuedCompletionStatus with ptr and some other arguments (which will set ptr)
}
void somefunction(someclass *&sc) {  //why *& ?
	someotherfunc((ULONG_PTR)&sc);
}

int main() {
	someclass *sc_p = 0;
	somefunction(sc_p);
	return 0;
}
Thanks for help