Array name by itself is an address or
pointer. It points to the address of the first element (0th element of an
array). Thus, if x is a one dimensional array, then address of the first array
element can be expressed as either &x[0] or simple as x. The address of the
second array element can be written as either &x[1] or as x+1 and so on. In
general, the address of the array element i+1 can be expressed as either &x[i]
or as x+i. In the expression x+i, x represents array name (address of first
element) whose elements may be integers, characters, float etc and i represents
integer quantity. Thus, here x+i specifies an address that is a certain number
of memory cells beyond the address of the first array element. Again, x[i] and
*(x+i) both represent the content of that address.
Example:
To display array element with their address
using array name as a pointer.
void main()
{
int x[5]={2,4,6,8,10}, k;
printf(“\n element no. element address”);
for(k=0;k<5;k++)
printf(“\n x[%d]=\t%d %u”,k,*(x+k), x+k);
getch();
}
output
Element no. Element address
X[0] 2 4056
X[1] 4 4058
X[2] 6 4060
X[3] 8 4062
X[4] 10 4064
In the above program element k
acts as the element number and its value varies from 0 to 4. When it is added
with an array name ‘x’ i.e. with address of the first element, it points to the
consecutive memory location. Thus, element number, element and their addresses
are displayed.
Another example:
Write a program to calculate
average percentage of 10 students in a class using pointer. Read percentage of
individual student from user.
Solution:
void main()
{
int per[10],i,sum=0;
clrscr();
printf("Enter percentage of each
student\n");
for(i=0;i<10;i++)
{
scanf("%d",per+i);
sum+=*(per+i);
}
printf("\nThe average
is=%d",sum/10);
getch();
}
Comments
Post a Comment