char *cptr;
declares variable cptr to be a pointer to a character (a byte in memory). That is, the
compiler allocates storage for variable cptr equal to the size of a memory address, and
allows the variable to be assigned the address of an arbitrary byte in memory.
The C programming language has a heritage of both byte and word addressing:
when performing arithmetic on pointers, for example, C accommodates the size of the
underlying item. As an example, the declaration:
int *iptr;
declares variable iptr to be a pointer to an integer (i.e., a pointer to a word). If each integer
contains four bytes, the autoincrement statement:
iptr + + ;
increases the value of iptr by four. That is, if iptr is declared to be the address of a
word in memory, autoincrement moves to the next word.