如果ptr是一个指针,那么typedef ptr p和typedef struct ptr p之间的区别是什么?

时间:2015-09-23 07:21:54

标签: c++ struct typedef

更新:thanx求助!这是我的错误。我看到来自"数据结构和算法分析的代码:在c"但我误解了它,我试过并且代码报告了错误,所以也许我没有正确使用它。也许代码就像Exmaple一样。我在后面的页面中找到了代码,这就是我的想法。问题解决了。

-----------原始问题: 是什么区别:

typedef struct node *ptr;
typedef struct ptr tree;

typedef ptr tree?

我们可以使用第二个创建列表,我们可以用这种方式定义B树吗?

如果没有,那有什么区别? (感谢)

1 个答案:

答案 0 :(得分:2)

首先,如果struct已经定义,那么你真的不必写node这个词,所以以下情况很好:

struct node
{
};

typedef node *nptr; //same result as typedef struct node *nptr;

nptr nodePointer = new node();

但是,您可以使用typedef struct语法,如下所示:

typedef struct {int first; int second;} S, *sPtr;
sPtr pointerToS; //same as S * pointerToS

现在,在您的示例中,您有

typedef struct node *ptr;
typedef struct ptr tree;

第一行表示ptr现在表示a pointer to node。第二行基本上是"请从现在开始将#em> ptr 结构称为"。但是,ptr是指向node的指针,而不是struct的指针,这就是为什么您会收到与using typedef-name 'ptr' after 'struct'类似的错误。

该行

typedef ptr tree;

另一方面说,"从现在开始,请打电话给 ptr 一个",无论ptr是什么,所以编译得很好。