C and derived data types?
I know the fundamental data types in C - char, int, float etc. But What exactly are derived data types in C language?
220.127.116.11 of the standard (well, a draft; hooray free :) covers derived types:
20 Any number of derived types can be constructed from the object, function, and incomplete types, as follows: -- An array type describes a contiguously allocated nonempty set of objects with a particular member object type, called the element type. Array types are characterized by their element type and by the number of elements in the array. An array type is said to be derived from its element type, and if its element type is T, the array type is sometimes called array of T. The construction of an array type from an element type is called array type derivation. -- A structure type describes a sequentially allocated nonempty set of member objects (and, in certain circumstances, an incomplete array), each of which has an optionally specified name and possibly distinct type. -- A union type describes an overlapping nonempty set of member objects, each of which has an optionally specified name and possibly distinct type. -- A function type describes a function with specified return type. A function type is characterized by its return type and the number and types of its parameters. A function type is said to be derived from its return type, and if its return type is T , the function type is sometimes called function returning T. The construction of a function type from a return type is called function type derivation. -- A pointer type may be derived from a function type, an object type, or an incomplete type, called the referenced type. A pointer type describes an object whose value provides a reference to an entity of the referenced type. A pointer type derived from the referenced type T is sometimes called pointer to T. The construction of a pointer type from a referenced type is called pointer type derivation.
These methods of constructing derived types can be applied recursively.
Data types that are derived from fundamental data types are called derived data types. Derived data types don't create a new data type but,instead they add some functionality to the basic data types.
In C, two derived data type are : Array & Pointer.
Array : An array is a collection of variables of same type. They are stored in contagious memory allocation.
int a; char chi ;
A pointer is a special variable that holds a memory address (location in memory) of another variable.
int i=10; int *j; j=&i;
Here, j is a integer pointer as it holds an address of an integer variable i.
Derived data type is nothing but it constructed from fundamental data type . example is pointer,structure,union etc. int i; int*ptr; ptr = &i; 'i' is variable of type an integer it is base data type. that's why pointer must be based data type.