"struct Obj* obj" 和 "Obj* obj" 之间的区别
Difference Between "struct Obj* obj" and "Obj* obj"
struct Element{
Element() {}
int data = NULL;
struct Element* right, *left;
};
或
struct Element{
Element() {}
int data = NULL;
Element* right, *left;
};
我正在使用二叉树,并且正在查找一个示例。在示例中,Element* right
是 struct Element* right
。这些有什么区别,写数据结构用哪个比较好?
我是从这个网站查找的:
https://www.geeksforgeeks.org/binary-tree-set-1-introduction/
在C中,struct
关键字必须使用来声明结构变量,但可选(在大多数情况下)在 C++ 中。
考虑以下示例:
struct Foo
{
int data;
Foo* temp; // Error in C, struct must be there. Works in C++
};
int main()
{
Foo a; // Error in C, struct must be there. Works in C++
return 0;
}
示例 2
struct Foo
{
int data;
struct Foo* temp; // Works in both C and C++
};
int main()
{
struct Foo a; // Works in both C and C++
return 0;
}
在上面的例子中,temp
是一个 指向 non-const Foo
.
的数据成员
此外,我建议使用一些 good C++ book 来学习 C++。
在 C++ 中,定义一个 class 也会定义一个具有相同名称的类型,因此使用 struct Element
或只是 Element
意味着同样的事情。
// The typedef below is not needed in C++ but in C to not have to use "struct Element":
typedef struct Element Element;
struct Element {
Element* prev;
Element* next;
};
您很少需要在 C++ 中使用 struct Element
(定义中除外)。
然而,在一种情况下您确实需要它,那就是当您需要在同名的类型和函数之间消除歧义时:
struct Element {};
void Element() {}
int main() {
Element x; // error, "struct Element" needed
}
struct Element{
Element() {}
int data = NULL;
struct Element* right, *left;
};
或
struct Element{
Element() {}
int data = NULL;
Element* right, *left;
};
我正在使用二叉树,并且正在查找一个示例。在示例中,Element* right
是 struct Element* right
。这些有什么区别,写数据结构用哪个比较好?
我是从这个网站查找的: https://www.geeksforgeeks.org/binary-tree-set-1-introduction/
在C中,struct
关键字必须使用来声明结构变量,但可选(在大多数情况下)在 C++ 中。
考虑以下示例:
struct Foo
{
int data;
Foo* temp; // Error in C, struct must be there. Works in C++
};
int main()
{
Foo a; // Error in C, struct must be there. Works in C++
return 0;
}
示例 2
struct Foo
{
int data;
struct Foo* temp; // Works in both C and C++
};
int main()
{
struct Foo a; // Works in both C and C++
return 0;
}
在上面的例子中,temp
是一个 指向 non-const Foo
.
此外,我建议使用一些 good C++ book 来学习 C++。
在 C++ 中,定义一个 class 也会定义一个具有相同名称的类型,因此使用 struct Element
或只是 Element
意味着同样的事情。
// The typedef below is not needed in C++ but in C to not have to use "struct Element":
typedef struct Element Element;
struct Element {
Element* prev;
Element* next;
};
您很少需要在 C++ 中使用 struct Element
(定义中除外)。
然而,在一种情况下您确实需要它,那就是当您需要在同名的类型和函数之间消除歧义时:
struct Element {};
void Element() {}
int main() {
Element x; // error, "struct Element" needed
}