名字不能取太长 2022-12-05 01:12 采纳率: 75%
浏览 196
已结题

在编写C++程序遇到了问题


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是一个指针变量

img


请问这是为什么呀?如何解决这个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)

  • 写回答

8条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-12-05 02:02
    关注
    评论

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 修改了问题 12月5日
  • 修改了问题 12月5日
  • 创建了问题 12月5日