gpt4 book ai didi

c - 如何检查特定数据结构的指针是否指向同一数据结构的另一个节点

转载 作者:行者123 更新时间:2023-11-30 16:48:28 26 4
gpt4 key购买 nike

这是我为 B+ 树定义的结构。我显示的函数返回节点的非空指针的数量。我遇到的问题是其中一个指针指向:

7:i = 4

8: node->pointer[i] = (struct bptree *) 0x1

在 gdb 中检查时,它既不是 NULL 指针,也不是指向 Bptree 节点的指针。实际上答案应该是 3。 那么有没有办法查看指针是否指向 Bptree 结构或它应该指向的任何数据结构。 N是B+树的阶

struct bptree
{
char **key;
int nokeys;
struct bptree* pointer[N];
int root;
int leaf;
struct bptree* parent;
};

typedef struct bptree Bptree;

int noofpointers(Bptree *node)
{
int i = 0;
if(node == NULL)
return i;
while(node->pointer[i] != NULL)
i++;
return i;
}

最佳答案

一般来说不是,不是。在运行时,指针除了其值之外不携带任何附加元信息。您无法检查内存并找出它保存的内容(您可以尝试用魔数(Magic Number)装饰数据)。

此外,您的代码很可怕,因为如果使用所有指针,它将超出范围。您必须确保循环中的i小于N,并在检查完所有指针后退出。

关于c - 如何检查特定数据结构的指针是否指向同一数据结构的另一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42947050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com