Check out the section on data structures, it explains the arrow operator (under "Pointers to structures):
The fact that it is in an if statement is irrelevant.
From the above link, we can see that
is equivalent to
|why is the & reference needed in the parameter for 'isitme' function|
There is an explanation of this (pass-by-reference that is) too:
In your example, param is just a reference to the argument passed to it.
Maybe an example of references will make a little more sense:
int a = 10;
int b = a; //b is a copy of a
int a_ref = a;//a_ref is a reference to a
Play with the above code snippet a little. Print the values. Print the address of the variables. An example run (the address of a at the end is just to make comparing it to that of a_ref easier):
address of a: 0x28ff08
address of b: 0x28ff0c
address of a_ref: 0x28ff08
addr again of a: 0x28ff08
As we can see b is a copy of a and a_ref is
a, just a different name. Thus, when we use a reference variable as a parameter for a function, the parameter is just an alias for the argument. That means that the argument passed is directly accessible within that function (under the name of the reference of course).