c - 存储两个指针之间的值差异
问题描述
考试题目图片:
所以问题要我们存储下一个节点和前一个节点的内存位置之间的差异。
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
也给了我这个错误。我想知道解决这个问题的最佳方法是什么。(没有强制转换的指针的整数)
解决方案
您可以使用该ptrdiff_t
类型,其用例正是这个。它定义在<stddef.h>
.
推荐阅读
- scala - 使用 Scala 打印六行中的前三个字符
- asp.net-mvc - ASP.Net MVC:用户必须在客户端选择一个复选框验证
- java - 在 ArrayList 中的 n 个项目之后添加新元素
- android - 如何在 android studio 中启用调色板?
- json - 如何在 Swift 中将数据附加到decodedData
- python - 删除重复项,将具有最高值的行保留在另一列中
- css - 使用 CSS,如何创建*厚* 超过 1px 的文本笔划轮廓?
- css - 我无法在 Font Awesome 5 中应用 Facebook 或 Instagram 图标作为内容
- c - 如果我们从 2^63 中减去 1000,为什么结果会少 1024 而不是 1000?
- python - 即使列不存在也可以找到列的总和,并添加零