Friday, March 18, 2011

Program for Pointer Arrays with Explanation


Program


#include <stdio.h>
void printarr(int *a[]);
void printarr_usingptr(int *a[]);
int *a[5];      \\ A
main()
{

    int i1=4,i2=3,i3=2,i4=1,i5=0;        \\ B
    a[0]=&i1;                        \\ C
    a[1]=&i2;
    a[2]=&i3;
    a[3]=&i4;
    a[4]=&i5;

    printarr(a);
    printarr_usingptr(a);
}
void printarr(int *a[])                  \\ D
{
    printf("Address        Address in array         Value\n");
    for(int  j=0;j<5;j++)
    {
        printf("%16u           %16u                 %d\n",
        a[j],a[j],a[j]);           \\E
    }
}
void printarr_usingptr(int *a[])
{
    int j=0;
    printf("using pointer\n");
    for( j=0;j<5;j++)
    {
        printf("value of elements   %d %16lu %16lu\n",**a,*a,a); \\ F
        a++;
    }
}

Explanation

  1. Statement A declares an array of pointers so each element stores the address.
  2. Statement B declares integer variables and assigns values to these variables.
  3. Statement C assigns the address of i1 to element a[0] of the array. All the array elements are given values in a similar way.
  4. The function print_arr prints the address of each array element and the value of each array element (the pointers and values that are pointed to by these pointers by using the notations &a[i], a[i] and *a[i]).
  5. You can use the function printarr_usingptr to access array elements by using an integer pointer, thus a is the address of the array element, *a is the value of the array element, and **a is the value pointed to by this array element.

No comments:

Post a Comment