The NULL is a special value because it is not a valid pointer value. Hence, we can use it as a semaphore to indicate that "this pointer does not point to anything (valid)".
All values in an integer are valid, unless your code assumes otherwise.
For example, the std::string::npos value is the largest integer value. It is special because no string can (supposedly) get that long (and be useful).
You can either choose a special value that you will not consider valid, or you can use another boolean variable to track whether or not the integer has meaning.