Pointers are arguably the most difficult concept to understand in C++ because of 2 main reasons:

1.) The syntax is often hard to understand
Code:
int (*p)(int a, int*) = &func;
2.) They have a WIDE range of applications from class objects to linked lists.