首页 新闻 会员 周边 捐助

c语言 二叉树节点

0
悬赏园豆:5 [已解决问题] 解决于 2013-09-30 11:25
 
1 struct TreeNode {
2     int val;
3     TreeNode *left;
4     TreeNode *right;
5     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
6 };

第五行明明就是函数么,谁知道有关这种格式的介绍啊?谢谢啦

光与存在的主页 光与存在 | 初学一级 | 园豆:133
提问于:2013-09-30 10:30
< >
分享
最佳答案
0

首先这是C++的语法,不是C语言的,struct这里和class类似

TreeNode(int x) : val(x), left(NULL), right(NULL) {} 是一个构造函数,

val(x), left(NULL), right(NULL) 叫类构造函数初始化列表

收获园豆:5
嗷嗷 | 小虾三级 |园豆:757 | 2013-09-30 10:35
其他回答(1)
0

C++在介绍类的时候说过,类是取代结构体的.可见结构体的功能并非我们平时用到的这么简单,没有太多人知道结构体中也可以有自己的函数成员.在C++中允许结构体包含函数成员,而标准C不支持. 进一步发现,c++中甚至允许结构体中含有构造函数、重载、public/private等等.这样看来,结构体真的与类越来越靠近相似了!C++扩充了结构体的功能,但C++中为了介绍面向对象的类,却淡化了同样精彩的结构体。当我们写一些小程序而觉得没有必要去构造类的时候,选择结构体确实会方便很多。在c++中,结构体和类就一个区别,默认作用域不同:在class中定义的成员默认是private,在struct默认是public。

在结构体中,也可以像一般变量一样,包含函数指针变量,下面例子

1 struct ABC
2   {
3   int x,y;
4   int (*func)(int,int); //函数指针
5   };

为此结构体分配内存的大小是多少呢?在32位系统vc++下,是4*2+4字节,两个int型加一个函数的地址4字节。

光与存在 | 园豆:133 (初学一级) | 2013-09-30 11:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册