int number = 88;
int * pNumber = &number; // Declare and assign the address of variable number to pointer pNumber (0x22ccec)
cout << pNumber<< endl; // Print the content of the pointer variable, which contain an address (0x22ccec)
cout << *pNumber << endl; // Print the value "pointed to" by the pointer, which is an int (88)
Why can I not just say cout << number << endl; instead? It does the exact same thing, so I just don't get it. Not to mention I don't even know when to use a pointer/reference and when not to. Can somebody please explain these things?