**Addition and Subtraction operation:**

After assigning some value (address) to the pointer, such pointer can be used in arithmetic operation only involving addition and subtraction. Be cautious, the addition and subtraction. After assignment whenever a number is added to pointer then a normal addition. The concept will be clear when you see an example.

Consider the following declaration: int A[10], *p: ‘A’ is an array of size 10 of the type integer. ‘p’ is a pointer variable also of the type integer. Name of the array ‘A’ give the base address of array. Now, p=A; pointer variable p is assigned with base address of array

A[0] first element of the array

P[0] also gives first element of array

A[3] fourth element of the array

P[3] also gives fourth element of the array

Suppose that base address allocated to array is 3200. Then the value of pointer ‘p’ is 3200. As the array is of the type integer, each element of array consumes 2 bytes of memory and the computer memory is allocated to the array statically (at the time of compilation) and the memory is ‘contiguous’ i.e. continuous. So, the first element address is 3202. Similarly each element of the array differs by size of the data type i.e. 2. Now let us see the concept of pointer addition. Pointer ‘p’ contains address of first element i.e. 3200. If 1 is added to ‘p’ then the resulting value will be 3202 not 3201. It means the address is updated by the size of the element rather then the just 1 .Similarly whenever a number ‘n’ is added to the pointer the result will be the concept. When 0 is added to pointer then it gives the address of ‘0’ number element i.e. first element of the array. When 2 is added to pointer then it gives the address of ‘2’ number element i.e. third element of the array.

The following looping statement will print the array elements through pointer variable:

for(I=0;I<10;I++)

Printf(“%d”,*(p+I));

The above loop is similar to the following normal looping statements to print the array:

for(I=0;I<10;I++)

Printf(“%d”,A[I]);

OR

for(I=0;I<10;I++)

Printf(“%d”,p[I]);

The subtraction operation is similar to the addition operation. If a number is subtracted from the pointer, then the result obtained gives the address of the previous element. Again the result depends on the size of the element. The following loop prints the array in reverse order with the help of pointer subtraction;

p=&A[9]; /*last element’s address is stored in ‘p’*/

for(I=0;I<10;I++)

printf(“%d”,*(p-I));

The array can be printed in reverse order using the following normal looping statements:

For(I=9;I>=0;I--) OR for(I=9;I>0;I--)

Printf(“%p”,A[I]); printf(“%d”,p[I]);

In the similar way the value stored in a pointer changes by:

1 if the element is of the type ‘char’

4 if the element is of the type of ‘float’ or ‘long integer’

8 if the element is of the type ‘double’

During pointer arithmetic involving ‘addition’ and ‘subtraction’. In addition operation the pointer points to the next element’s address where as in subtraction the pointer points to the previous element’s address.

## 0 comments:

## Post a Comment