What is 'videoMemory' ? I don't understand why you are using &videoMemory...
Be careful when computing addresses inside of pointers, and go back to computing the address as a void* / integer directly if you have a doubt.
Anyway, in the end you will want an uint8_t/char pointer so doing the calculations in an uint16_t pointer is not really necessary.
This should work : (VGA_MEM_ADDR is vga mem start address, e.g. 0xB8000, and VGA_COLUMNS is 80 ; addr_t is uint32_t or uint64_t depending on architecture)
Code:
char getCharacterAtCursor()
{
addr_t address = VGA_MEM_ADDR + (cursorY * VGA_COLUMNS * 2) + (cursorX * 2);
return *((char*) address);
}