Pointer Arithmetic In C

风流意气都作罢 提交于 2019-11-26 11:53:41

Like the ++ increment operator, the - subtraction operator with pointers also takes into account the size of the objects being pointed to. Specifically, the result returned is the number of bytes difference in the pointer values divided by the size of the pointed-to object (12, in your example). So the difference is 12 bytes, divided by size 12, or 1.

If you really want to know the difference cast each pointers to a (char*) and then to (int) and then subtract. That should give you the answer.

This code gives you the absolute value:

printf("%d\n", abs((int)((char*)q) - (int)((char*)p)));

Remember to include math.h.

Edit: As pointed out in a comment we don't need a double cast. Casting each pointerpointer to an int and then subtracting gives the same answer as the (unecessary) double casting above.

printf("%d\n", abs((int)(q) - (int)(p)));
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!