In C/C++, you are allowed to address memory directly. C uses pointers to reference a piece of memory. C++ can use pointers and references.
For example, if you were given an address of an integer 0x14380, you could declare a variable that pointed to that address as: int* number = 0x14380;
You could assign it a value *number = 7;
An you could print it: std::cout << *number << std::endl;
C/C++ has named variables and unnamed variables. Named variables are variables that you declare as global, local or function parameters. Unnamed variables can be obtained from the heap or reference named variables and must be handled using pointers (or references).
Monster* checkRandomEncounter(); declares a function that returns a pointer to type called Monster.