It doesn’t come after the variable, it comes after the type.
struct Type { // define a type
int foo;
};
Type * variable = NULL; // define a variable as pointer-to-type
variable = new Type(); // assign a value to a variable
(*variable).foo = 2; // dereference a pointer variable (style 1)
assert(variable->foo == 2); // dereference a pointer variable (style 2)
Style 1 and style 2 are equivalent unless very peculiar operator overloading is involved.