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 is the protocol used by sap gateway process, What is the protocol used...

What is the protocol used by SAP Gateway process? The SAP Gateway method communicates with the clients based on the TCP/IP Protocol.

Give introduction to object oriented analysis and design, Introduction to o...

Introduction to object oriented Analysis & design: tools In case of OOAD, Unified Modelling Language (UML) is a well accepted language. It is used for constructing, visualizin

Explain the working of a three bit binary ripple counter, With the help of ...

With the help of clocked JK flip flops and waveforms, explain the working of a three bit binary ripple counter. Write truth table for clock transitions. Ans. Three-Bit Binary Rip

C, "Super ASCII", if it contains the character frequency equal to their asc...

"Super ASCII", if it contains the character frequency equal to their ascii values. String will contain only lower case alphabets (''a''-''z'') and the ascii values will starts from

Explain the edge-triggered j-k flip-flop, Explain the Edge-triggered J-K fl...

Explain the Edge-triggered J-K flip-flop? The J-K flip-flop works extremely similar to S-R flip-flop. The merely difference is that this flip-flop has NO invalid state.

What is dma operations, What is DMA operations? State its advantages. ...

What is DMA operations? State its advantages. In order to transfer bulk amount of data among memory and I/O device without involvement of CPU, the Direct Memory Access metho

Describe about instruction set, Q. Describe about Instruction set? Inst...

Q. Describe about Instruction set? Instruction set is the boundary where computer designer and computer programmer see the same computer from various viewpoints. From the desig

What is meant by latch, Latch is a D- type flip-flop used as a temporary st...

Latch is a D- type flip-flop used as a temporary storage device controlled by a timing signal, which can kept 0 or 1. The primary function of a Latch is data storage. It is used in

C programming, At a shop of marbles, packs of marbles are prepared. Packets...

At a shop of marbles, packs of marbles are prepared. Packets are named A, B, C, D, E …….. All packets are kept in a VERTICAL SHELF in random order. Any numbers of packets with thes

What is the advantage of caching in a web browser, What is the advantage of...

What is the advantage of caching in a web browser? Like other application browsers utilize a cache to enhance document access. The browser places a copy of all items it retriev

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