for (int m = 0; m <= Merge->keynum; m++)
{
q->ptr[loc] = Merge->ptr[m];
loc++;
}
以上代码中q->ptr[loc] = Merge->ptr[m]意思应该是把Merge->ptr[m]赋值给q->ptr[loc],但是调试中发现Merge->ptr[m]被赋值给了q
调试结果如下
q是引用类型,是一个指针的引用,Merge是一个指针变量
请问这是为什么呀?如何解决这个bug?
结构定义:
//B树结构定义
typedef int KeyType; //指定int类型为关键字类型
typedef bool Status;
typedef struct BTNode
{
//B树结点类型
int keynum; //结点当前关键字个数
KeyType key[ORDER + 1]; //结点关键字数组,key[0]未用
struct BTNode* parent; //双亲结点指针
struct BTNode* ptr[ORDER+1]; //孩子结点指针数组,预留一个位置插入使用
}BTNode,*BTree;
typedef struct _result
{
//B树的查找结果类型
BTree pt; //指向找到的结点
int i; //关键字在结点的位序
bool tag; //结果标志,1为成功,0为失败
}result;
函数原型:
Status Restore(BTree& q)