'&' takes the address of the variable which is whatever the environment assigns. You are passing the address of the variable to the function, which will presumably modify that variable so that it is changed when main continues. The initial value of the variable is unspecified and could be anything. Then you make an assignment of (-1). The value of the address is not something that a programmer needs to worry about. The important thing is that you understand what is happening in the program.