首页 > 解决方案 > 存储两个指针之间的值差异

问题描述

考试题目图片:

所以问题要我们存储下一个节点和前一个节点的内存位置之间的差异。

struct sub_node{
   float data;
   int sub_value; //memory address of next node - previous node
};

这是我为每个节点制作的结构。这适用于除最终节点和起始节点之外的所有节点。我可以通过简单地计算下一个节点地址

struct node * next = node_current->sub_value + node_prev; //node_prev is 
        //memory address of the previous node(pointer)

同样在尝试向后遍历时。

&NEXT_NODE - 0将其存储为整数值时给我一个错误。(参见图片进行描述)同样,0 - &SECOND_LAST_NODE也给了我这个错误。我想知道解决这个问题的最佳方法是什么。(没有强制转换的指针的整数)

标签: cpointers

解决方案


您可以使用该ptrdiff_t类型,其用例正是这个。它定义在<stddef.h>.


推荐阅读