I know this is about as bad as it gets for "religious" issues, as Jeff calls them. But I want to know why the people who disagree with me on this do so, and hear their justification for their horrific style. I googled for a while and couldn't find a style guide talking about this.
So here's how I feel pointers (and references) should be declared:
int* pointer = NULL;
int& ref = *pointer;
int*& pointer_ref = pointer;
The asterisk or ampersand goes with the type, because it modifies the type of the variable being declared.
EDIT: I hate to keep repeating the word, but when I say it modifies the type I'm speaking semantically. "int* something;" would translate into English as something like "I declare something, which is a pointer to an integer." The "pointer" goes along with the "integer" much more so than it does with the "something." In contrast, the other uses of the ampersand and asterisk, as address-of and dereferencing operators, act on a variable.
Here are the other two styles (maybe there are more but I really hope not):
int *ugly_but_common;
int * uglier_but_fortunately_less_common;
Why? Really, why? I can never think of a case where the second is appropriate, and the first only suitable perhaps with something like:
int *hag, *beast;
But come now... multiple variable declarations on one line is kind of ugly form in itself already.