One pointer variable be subtracted from another, Computer Engineering

Assignment Help:

Under what conditions can one pointer variable be subtracted from another?

Pointer subtraction isn't used very much, but can be handy to determine the distances between two array elements (i.e., the difference in the array indexes). You may not know exactly which element you're pointing to using pointer subtraction, but you can tell relative distances.

Pointer subtraction can subtract two pointers of the same type. The result is the distance (in array elements) between the two elements.  Both pointers must point to objects that are members of the same array. After the compiler subtracts the addresses of two pointers,  it  divides  the result  (in  bytes)  by  the  size  of  the  pointed-to  object.  Therefore, subtracting one pointer from another yields the number of elements between the two pointers. The formula used is rather simple. Assume that p1 and p2 are both pointers of type T *. Then, the value computed is:

( p2 - p1 ) == ( addr( p2 ) - addr( p1 ) ) / sizeof( T )

This can result in negative values if p2 has a smaller address than p1. p2 and p1 need not point to valid elements in an array. The formula above still works even when p2 and p1 contain invalid addresses (because they contain some address).

The following program illustrates how pointer subtraction yields the number of elements between two pointers. short s_array[10], *s_ptr1 = &s_array[0], *s_ptr2 = &s_array[3];

main()

{

printf("The address in s_ptr1 is %u\n", s_ptr1);

printf("The address in s_ptr2 is %u\n", s_ptr2);

printf("\nSubtracting s_ptr2 from s_ptr1 yields %d\n", s_ptr1 - s_ptr2);

printf("Subtracting s_ptr1 from s_ptr2 yields %d\n", s_ptr2 - s_ptr1);

}

The output from the preceding program was as follows: The address in s_ptr1 is 14737480

The address in s_ptr2 is 14737486

Subtracting s_ptr2 from s_ptr1 yields -3

Subtracting s_ptr1 from s_ptr2 yields 3

Notice that, when pointer s_ptr2 is subtracted from pointer s_ptr1, the pointer subtraction yields a negative value because s_ptr2 locates an object with a higher address than the object pointed to by s_ptr1.

 


Related Discussions:- One pointer variable be subtracted from another

What do you mean by program counter, Q. What do you mean by Program Counter...

Q. What do you mean by Program Counter? Program Counter (PC): It determines the instruction that is to be executed next which means after the execution of an on-going instructi

Define mercantile process model from perspect of merchant, Define Mercantil...

Define Mercantile Process Model from the Merchant’s perspective along with a suitable diagram. This model consists of three activities into the purchase consummation phase: Aut

COMPUTER SYSTEM, Classify computer systems according to capacity. How they ...

Classify computer systems according to capacity. How they are different from computers according to the classification of technology. Provide comparative study also.

Block diagram of an associative memory, Q. Block diagram of an associative ...

Q. Block diagram of an associative memory? The block diagram of an associative memory is displayed in Figure below. It comprises of a memory array and logic for m words with n

Difference between next and continue clause, The difference among the next ...

The difference among the next and continue verb is that in the continue verb it is used for a situation where there is no EOF condition that is the records are to be accessed again

Generates sequence code, The basic project will have each group generate a ...

The basic project will have each group generate a sequence of 1's and 0's using  the Motorola 688HC11 board to turn ON and then turn OFF the TV set installed in ATRC 306. Each tele

Introduction to the sorted arraylist, Consider  a  collection  class  that ...

Consider  a  collection  class  that  is  similar  to  the ArrayList  class,  except  that  elements  are sorted in a certain order. We will call this class SortedArrayList. This c

Computer graphics, raster scan and random display technology

raster scan and random display technology

Two ethernet switches sw1 and sw2 , Six machines H1, H2, ..., H6 are linked...

Six machines H1, H2, ..., H6 are linked by two Ethernet switches SW1 and SW2 as given below. Both switches have four ports drawn. The port numbers are as indicated. Suppose the two

What do you meant by dreamweaver, A Web site is a set of linked documents w...

A Web site is a set of linked documents with shared attributes, like related topics, a similar design or a shared purpose. Macromedia Dreamweaver is a site creation and management

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd