In C, which data type is used to store memory addresses?

In C, pointers are used to store memory addresses. They can point to variables of any data type and are often used for dynamic memory allocation and manipulation.
Pointer variables in C are declared by specifying the data type of the value they point to, followed by an asterisk (*) and then the variable name.

For example:

int *ptr;
char *ptr1;

In these declarations, ptr and ptr1 are pointer variables that can store memory addresses of integer and character types, respectively.