将结构指针传递给函数

Dha*_*nan 0 c++ pointers

我有这样的结构

struct binTree{
long long data;
struct binTree *left;
struct binTree *right;
}
Run Code Online (Sandbox Code Playgroud)

和这样的功能:

void height(struct binTree **r)
{
    ...
    ...
    height(&(r->left));
    height(&(r->right));
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

编译上面的函数给我这样的错误......

error: request for member ‘left’ in ‘* r’, which is of non-class type ‘binTree*’
error: request for member ‘right’ in ‘* r’, which is of non-class type ‘binTree*’
Run Code Online (Sandbox Code Playgroud)

代码有什么问题?如何传递结构中的指针?

Vla*_*cow 6

你必须写

height( &( ( *r )->left ) );
height( &( ( *r )->right ) );
Run Code Online (Sandbox Code Playgroud)

或者更简单

height( &( *r )->left );
height( &( *r )->right );
Run Code Online (Sandbox Code Playgroud)

这里的运算符&*一元运算符的优先级低于后缀运算符,包括运算符->

PS因为我认为这个函数不会改变对象binTree,所以你可以简化函数并简单地将参数声明为

const struct binTree *r
Run Code Online (Sandbox Code Playgroud)

或者如果它是C++程序那么

const binTree *r
Run Code Online (Sandbox Code Playgroud)

在这种情况下,函数中使用的语法结构会更简单.

只有我不明白为什么它有返回类型void.:)函数不应该返回二叉树的高度或高度在函数体内输出?如果函数返回高度会更好.在这种情况下,您可以比较两个二叉树的高度.