If you said:
char buffer[SIZE];
char * ptr = & buffer[SIZE];
then yes, it is legal. You are specifically allowed by the C++ standard to use the one-past-the-end of an array in this manner, and it is used extensively when (for example) working with iterators.
Edit: But see comments by litb and Steve Jessop. If you want to be entirely politcally correct, you probably want:
char * ptr = buffer + SIZE;
Either way, the one-past-the-end address is a valid address - the perhaps not quite clear issue (as I understand it) is whether you are allowed to dereference it.