From: Andrew Allen > I know what &x is. So what the heck is x& ?? "&x"=address of x "x &"=reference to type x (some people write it at 'x&') compare to: "x *"=pointer to type x References are best described as "const pointers that have been dereferenced for you already". There's nothing you can do with references that you couldn't do by taking addresses and dereferencing pointers. And there's some things you can't do with references. Like change what they refer to. Once they've been initialized, they refer to the same thing for their lifetime. That's why they're like "const pointers". int i=0; void f(int &); // f takes a reference to b void F(int *); int &g(); // g returns a reference... int *G(); main() { int a; // make 'b' a reference to 'a' int &b(a); // or int &b=a; int *c(&a); // or int *c=&a f(a); // pass a reference to 'a' F(&a); // pass a pointer to 'a' f(b); // does the same thing, since 'b' is a reference to 'a' F(c); // same, except with pointers g()=5; // assign 5 to what g() returns a reference to *G()=5; // assign 5 to what g() returns a pointer to } void f(int &c) {c=5;} // assigns 5 to what 'c' refers to void F(int *c) {*c=5;} int &g() {return i;} int *G() {return &i;}