The only justification is for much larger functions, someone may add new functionality to the bottom of a function not realizing that the parameter was modified or made invalid earlier up.
Imagine:
int bighorriblefunction(const char * astr)
{
// hundreds of lines of horribleness
while ( * astr ) { /* something */ ++ astr ; }
// more pages of code
/** author two adds later */
if ( ! strcmp(astr, "magicvalue") ) { /** do this really important thing **/ return 1 ; }
return 0 ;
}
Its going to take author two a while to realize that the new code is never going to run.