Yes (as long as sizeof(ANY_TYPE) is not 0. Some compilers allow it, which is non-standard -- see Can sizeof return 0 (zero)). You'd be safe with <= or just assume a standard compiler.
Yes
And in C++ too.
Pointer comparison only makes sense inside of arrays and structs/classes, not generally.