An opaque pointer is one in which no details are revealed of the underlying data For example, you may declare in a header file
typedef struct mystruct *p_mystruct;
which declares a type p_mystruct which is a pointer to the opaque structure struct mystruct, hence anything you declare as p_mystruct will be an opaque pointer.
Users can write code like:
p_mystruct x = NULL;