<P> Every data type T has a corresponding type pointer to T. A pointer is a data type that contains the address of a storage location of a variable of a particular type . They are declared with the asterisk (*) type declarator following the basic storage type and preceding the variable name . White space before or after the asterisk is optional . </P> <P> Pointers may also be declared for pointer data types, thus creating multiple indirect pointers, such as char * * and int * * *, including pointers to array types . The latter are less common than an array of pointers, and their syntax may be confusing: </P> <P> The element pc consumes ten blocks of memory of the size of pointer to char (usually 40 or 80 bytes on common platforms), but element pa is only one pointer--sizeof pa is usually 4 or 8--and the data it refers to is an array of ten bytes (sizeof * pa = = 10). </P> <P> A union type is a special construct that permits access to the same memory block by using a choice of differing type descriptions . For example, a union of data types may be declared to permit reading the same data either as an integer, a float, or any other user declared type: </P>

What are the data types of c programming language