Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从指针中减去整数的结果是什么?_C++_Pointers - Fatal编程技术网

C++ 从指针中减去整数的结果是什么?

C++ 从指针中减去整数的结果是什么?,c++,pointers,C++,Pointers,我在研究数据结构 当我读这段代码时,我不明白 void kth(int k){ Node* x = root; while(1){ while(x->l && x->l->cnt > k) x = x->l; if(x->l) x -= x->l->cnt; // **==> ?????** if(!k--) break; x = x->r;

我在研究数据结构 当我读这段代码时,我不明白

void kth(int k){
    Node* x = root;
    while(1){
       while(x->l && x->l->cnt > k) x = x->l;
       if(x->l) x -= x->l->cnt; // **==> ?????**
       if(!k--) break;
       x = x->r;
    }
    splay(x);
}
所有其他行都能理解,但

 if(x->l) x -= x->l->cnt; // **==> ?????**
这条线听不懂 x是指向该点地址的指针

但是cnt是一个整数变量

x是由“new”运算符分配的指针

x -= x->l->cnt
这条线是什么意思


这行代码在语法或语义上是否正确?

如果
x->l->cnt
是整数,则表示“将指针
x
移动到
x->l->cnt
当前指向的元素之前”。我无法判断该操作是否有效,因为我不知道
x
所指的是什么。旁注:不要成为“那个家伙”,使用描述性变量名。它使读取整个数量级的代码变得更容易。如果它更容易阅读,通常也更容易理解。@user4581301实际上我不得不说这些变量名是可以的。不太好(他们应该真正使用
计数
,而不是
l
r
cnt
),但并不可怕。此外,它们可能是从一本书中逐字复制而来的。像
while(1)
这样的东西!k--
和OP询问的操作的可读性问题比名称更大。要了解更多信息,可以搜索“指针算术”