Uso correcto de Realloc

Esta es la forma en que me han enseñado a usarrealloc():

int *a = malloc(10);
a = realloc(a, 100); // Why do we do "a = .... ?"
if(a == NULL) 
//Deal with problem.....

¿No es eso redundante? ¿No puedo hacer algo como esto? :

if(realloc(a, 100) == NULL) //Deal with the problem

Lo mismo para otros ejemplos de realloc que he encontrado, por ejemplo:

int *oldPtr = malloc(10);
int * newPtr = realloc(oldPtr, 100);
if(newPtr == NULL) //deal with problems
else oldPtr = newPtr;

¿No puedo hacer esto en su lugar? :

int *oldPtr = malloc(10);
if(realloc(oldPtr, 100) == NULL)  //deal with problems
//else not necessary, oldPtr has already been reallocated and has now 100 elements

Respuestas a la pregunta(4)

Su respuesta a la pregunta