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

State the important features of operating system, a. Define operating syste...

a. Define operating system? State the important features of operating system? b. Describe the following facilities for implementing interacting processes in programming language

Displays a message when an applet starts up, Write an applet that sets the ...

Write an applet that sets the background colour to cyan and foreground colour to red and displays a message that illustrates the order in which various applet methods are called wh

What are the modes in which any update tasks work, What are the modes in wh...

What are the modes in which any update tasks work? Synchronous and Asynchronous.

What is a parsing, what is parsin? Source programmed statements are ob...

what is parsin? Source programmed statements are observed as tokens, recognizing, building block of language the task of scanning the source statement and classifying the diff

Define macros, Define macros.   A macro is a pre-processor directive wh...

Define macros.   A macro is a pre-processor directive which is a program that processes the source code before it passes by the compiler. These are placed in the source program

Interrupt - driven input-output, Q. Interrupt - Driven Input-output? Pr...

Q. Interrupt - Driven Input-output? Problem with programmed I/O is that processor has to wait a long time for I/O interface to see whether a device is free or waits until compl

DISCRETE STRUCTURES, SET 2I OF ALL INTEGERS WITH ZERO IS AN ABELIAN GROUP

SET 2I OF ALL INTEGERS WITH ZERO IS AN ABELIAN GROUP

What is interrupt vector table, Interrupt vector table is always created in...

Interrupt vector table is always created in first 1K area of the memory. Explain why? When CPU receives an interrupt type number from PIC, it uses this number to look up corres

General considerations for research -artificial intelligence, General Consi...

General Considerations for Research -artificial intelligence: If we can specify the initial state, the operators or a consumer and the goal check for a search problem, that al

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