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

Delete a user from a category, Execute the following functionality using Ja...

Execute the following functionality using Java & SQL with simple GUI interface: 1.  Insert/delete/update an XML document.  2.  Insert/delete/update a category.  3.  Alloca

Explain new services of cpu based exchange, Explain new services of  CPU B...

Explain new services of  CPU Based Exchange. These new services are termed as supplementary services and several of the prominent ones are given below as:  Category 1:

Explain parallelism conditions, Parallelism Conditions As discussed ear...

Parallelism Conditions As discussed earlier, parallel computing needs the segments to be executed in parallel should be independent of each other. So before executing paralleli

How do you ensure that our records are scanned accurately, How do you ensur...

How do you ensure that our records are scanned accurately? Not only do we have a highly trained and capable staff, we also have quality controls in place to make sure your reco

Define public identifiers, Q. Define Public Identifiers? Public Identif...

Q. Define Public Identifiers? Public Identifiers: A public identifier is one which is defined within one module of a program however potentially accessible by all of the other

Using information in information system, Using Information in Information S...

Using Information in Information System Information Systems can be thought of as being useful at three levels:  The detail level where information is used to carry out disc

Era of first generation computers, Q. Era of first generation computers? ...

Q. Era of first generation computers? The trends that were encountered at the time of the era of first generation computers were: Centralized control in a single CPU (al

Nor gate, The NOR gate. The NOR gate is equivalent to an OR gate follow...

The NOR gate. The NOR gate is equivalent to an OR gate followed by a NOT gate so that the output is at logic level 0 when any of the inputs are high otherwise it is at logic le

Critical section., what is critical section problem in operating system wit...

what is critical section problem in operating system with diagram

Illustrate the purchase consummation activity, Illustrate the Purchase Cons...

Illustrate the Purchase Consummation activity? Purchase Consummation: This model lists three activities in the purchase consummation phase: • Receipt of product. • Pl

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