Views: 431
There are many different type-qualifiers in the C programming language. Here is a brief description of some type qualifiers in C (and similar languages).
Do remember the “Clockwise/Spiral Rule” – Read the type qualifiers backwards
int*– pointer to intint const*– pointer to const int (const int*==int const*)int *const– const pointer to intint const *const– const pointer to const int (const int* const==int const *const)int **– pointer to pointer to intint **const– const pointer to pointer to intint *const *– pointer to const pointer to intint const **– pointer to pointer to const intint *const *const– const pointer to const pointer to intvolatile int *const– constant pointer to volatile intvoid (*signal(int, void (*fp)(int)))(int)– signal is a function passing an int and a pointer to a function passing an int returning nothing (void) returning a pointer to a function passing an int returning nothing (void)
Storage classes (listed below) come before type-qualifiers (also listed below). Only one storage class can be used when declaring a variable. Both storage and type qualifiers come before the datatype.
Storage Classes
- auto – Stored in stack during the code-block
- extern – Lasts the whole program, block, or compilation unit; globally visible
- register – Stored in stack or CPU-register during the code block
- static – Lasts the whole program, block, or compilation unit; private in program
- typedef – The data specifies a new datatype
- __thread – Thread-local-storage; one instance per thread
- _Thread_local – Thread-local data
Type-Qualifiers
- const – Value does not change; read-only
- restrict – For the lifetime of the pointer, the object can only be accessed via the pointer
- volatile – Optimizing-compilers must not change
- _Atomic – Map a variable to a basic built-in type (depending on the processor) so that reading and writing are guaranteed to happen in a single instruction
Views: 431
