是什么下列代码
鉴于此代码之间的差异:是什么下列代码
#include <iostream>
using namespace std;
int main()
{
typedef struct node
{
int data;
node* left;
node* right;
} *nodeptr;
nodeptr root, curr, temp;
}
而这第二个代码:
#include <iostream>
using namespace std;
int main()
{
struct node
{
int data;
node *left;
node *right;
}
node *root, *curr, *temp;
}
我有几个问题:
- 做两个代码代表一样的东西?
-
int* a
和int *a
代表了同样的事情吗? - 在我声明的第一个代码中:
queue <nodeptr>q
它可以工作,但在第二个代码中,当我声明queue <node>q
时它没有工作。为什么?
int * a;和int * a;是相同的。这里的指针空白是完美的,不会改变任何意义。
队列节点q应该工作。但也许用更多的细节问一个不同的问题。我附上了一些工作代码,确实可以运行queue<node> q;
。
#include <iostream>
#include <queue>
using namespace std;
struct node
{
int data;
node *left;
node *right;
};
int main()
{
node *root, *curr, *temp;
queue<node> q;
}
_“队列节点q应该工作”_ ???显示_should work_实际的代码。 –
我编辑了我的答案以提供工作代码。 –
关于第二个问题,我只想说,无论你写int* a
或int *a
,它是同一个东西。
int* a;
int *a;
int * a;
全部相同,其中a是一个指向int类型的,事实上int*a;
是相同的也...
这已经有一个重复的问题。 –
是两个代码代表同样的事情?
它们几乎代表相同的东西,除了第一个定义为nodeptr
作为typedef
ed名称。
是int * a和int * a表示同样的东西吗?
是的。
对于第一代码时,我声明:
queue <nodeptr>q
它的工作,但对于第二个代码,当我在代码中声明:queue <node>q
它并没有奏效。为什么?
queue<nodeptr> q
与queue<node*> q
相同。因此比较是不恰当的。
如果您使用C++ 11,则应该可以使用queue<node>
。看到它在http://ideone.com/tkij08工作。
关于本地结构,自C++ 11以来一直不错。 – juanchopanza
差不多。两者都定义了
struct node
,但第一个也定义了指向struct node
的指针的类型,其名称为nodeptr
。不,他们是完全一样的东西。空白或缺少空白并不重要。
因为在第一种情况下,你声明了一个指向类型节点的指针队列,而在第二种情况下,你声明了一个节点类型的对象队列。
queue
大概会对node
未满足的内容提出额外要求。没有看到queue
的来源,很难猜出可能是什么,但可能需要一个比较运算符来定义某种类型。如果你想知道更多,你应该真正发布示例源代码和你得到的错误信息,而不是仅仅声明'它不工作'。
请问每个问题一个问题。否则,未来的研究是没有价值的。 –
1.第2号。是的。 3.详细说明_“它没有工作”_ –
你的第二个例子在结构声明后遗漏了';'。 –