Solution for Exercise 19-5

ex1905

#include <stdio.h>

int main()
{
    int numbers[10];
    int x;
    int *pn;

    pn = numbers;       /* initialize pointer */

    /* Fill array */
    for(x=0;x<10;x++)
    {
        *pn=x+1;
        pn++;
    }

    pn = numbers;        /* re-initialize pointer */

    /* Display array */
    for(x=0;x<10;x++)
    {
        printf("numbers[%d] = %d, address %p\n",
                x,numbers[x],pn);
        pn++;
    }

    return(0);
}

Output

numbers[0] = 1, address 0x7ffeef1359f0
numbers[1] = 2, address 0x7ffeef1359f4
numbers[2] = 3, address 0x7ffeef1359f8
numbers[3] = 4, address 0x7ffeef1359fc
numbers[4] = 5, address 0x7ffeef135a00
numbers[5] = 6, address 0x7ffeef135a04
numbers[6] = 7, address 0x7ffeef135a08
numbers[7] = 8, address 0x7ffeef135a0c
numbers[8] = 9, address 0x7ffeef135a10
numbers[9] = 10, address 0x7ffeef135a14

Notes

* If the output shows all the same address, you failed to re-initialize the value of pn. See Line 18 above:

pn = numbers;

* You also must remember to increment variable pn in the for loop, as is done at Line 25.