This creates a stack based array of 10 cat objects. Why you're using Hungarian notion, I do not know. While arrays do have an implicit pointer to their base, we usually don't treat it as such, at least in this case. Array and pointer relationships are out of the scope of this thread.
Creates a stack based pointer to a CAT object. It currently does not point to anything.
CAT* pCat; pCat = malloc(sizeof(CAT));
We just allocated memory for one CAT object on the heap. Now we can do cat stuff with the pointer. We do NOT malloc the array from above, memory has already been set aside.