7. Using a pointer to access an array

When an array is passed as a function argument,

only the starting address of the array is passed,

and the function receives this address in a pointer variable

which can be used as a local variable inside the function.

For example, rewriting strlen using pointer access instead of array indexing:

        size_t strlen( const char *s)
        {
            size_t len = 0;
            while( *s != '\0') { ++len; ++s; }
            return len;
        }
Alternatively, the string length can be computed by subtracting pointers to the beginning and end of the string:
        size_t strlen(const char *s)
        {
            const char *start = s;

            while( *s != '\0') ++s;

            return s - start;
        }
Functions which operate on arrays of int or double can also be written using pointer access.

For example, for the sum of an array of double:

        double sum( const double x[], int n)  /* x is `const double *' */
        {
            double r = 0;

            while( n > 0)
            {
                r += *x;  --n;

                ++x;    /*  ++x  adds  1 * sizeof(double)  */
            }
            return r;
        }