If we have to hold an address of any data type then we require a pointer of that data type.
But a pointer is simply an address, and an address is always int
There are several reasons:
char is different from reading or writing a double.Note that there is a pointer type that means "simply a pointer" in C, called void*. You can use this pointer to transfer an address in memory, but you need to cast it to something useful in order to perform operations in the memory pointed to by void*.