Pass by pointer (sometime called reference):
Code:
int clSel(player1* play1)
{
    // Changes made here to play1 will be kept once function exits
}

...

player1 play1;
clSel(&play1);  // Changes made here stay put
Although this is totally true i believe we must inform/warn our fellow coder that inside the function you won't be able to access the variable in a regular way since it is now a pointer, the following is totally wrong and it won't even compile:
Code:
int clSel(player1* play1)
{
        play1.name = "John";
}
So if you use this approach to access the name member of the player1 object that was passed in you'd have to do
Code:
int clSel(player1* play1)
{
        (*play1).name = "John";
}
Or:
Code:
int clSel(player1* play1)
{
        play1->name = "John";
}
Cheers