Arrays

Arrays of any type can be formed in C. The syntax is simple:

      type name[dim];

In C, arrays starts at position 0. The elements of the array occupy adjacent locations in memory. C treats the name of the array as if it were a pointer to the first element--this is important in understanding how to do arithmetic with arrays. Thus, if v is an array, *v is the same thing as v[0], *(v+1) is the same thing as v[1], and so on:


Pointer use for an array

Consider the following code, which illustrates the use of pointers:







 
#define SIZE 3
 
void main()
{
    float x[SIZE];
    float *fp;
    int   i;
                               /* initialize the array x         */
                               /* use a "cast" to force i        */
                               /* into the equivalent float      */
    for (i = 0; i <>
      x[i] = 0.5*(float)i;
                               /* print x                        */
    for (i = 0; i <>
      printf("  %d  %f \n", i, x[i]);
                               /* make fp point to array x       */
    fp = x;
                               /* print via pointer arithmetic   */
                               /* members of x are adjacent to   */
                               /* each other in memory            */
                               /* *(fp+i) refers to content of        */
                               /* memory location (fp+i) or x[i] */
    for (i = 0; i <>
      printf("  %d  %f \n", i, *(fp+i));
}






 

(The expression ``i++'' is C shorthand for ``i = i + 1''.) Since x[i] means the i-th element of the array x, and fp = x points to the start of the x array, then *(fp+i) is the content of the memory address i locations beyond fp, that is, x[i].