c is an unsigned character, an eight bit (one byte) variable.
p is a pointer to an unsigned character meaning that it contains the address of a variable which is an unsigned character (such as
p could be two, four or eight bytes in size, depending on the operating system.
& is the “address of” operator. It returns the address of the associated variable.
* is the dereferencing operator. It returns the value which is at the memory address referenced by the associated variable.
b by the value referenced by
c is a pointer). It may be more clear to show the pointer dereference explicitly:
a = b * (*c);