加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C结构中的自引用

发布时间:2020-12-16 03:37:37 所属栏目:百科 来源:网络整理
导读:K R(C书)的这部分让我思考: 从书中 struct tnode { char *word; int count; struct tnode *left; struct tnode *right;}; 一个节点的递归声明可能看起来很谦虚,但它是正确的. 因为tnode的定义不使用tnode,而只是一个指向tnode的指针,编译器会给我们一个免费
K& R(C书)的这部分让我思考:

从书中

struct tnode {
             char *word;
             int    count;
             struct tnode *left;
             struct tnode *right;
};

一个节点的递归声明可能看起来很谦虚,但它是正确的.

因为tnode的定义不使用tnode,而只是一个指向tnode的指针,编译器会给我们一个免费的通行证.但我想知道如何计算机知道有多少内存给一个tnode?

解决方法

指针具有固定大小(32/64位,取决于平台),因此编译器知道左右指针需要多少内存,并可以计算结构的整体大小.

由于同样的原因,如果你需要一个指针,就足够做一个前向声明struct tnode;并且可以使用该结构体的指针,例如:struct tree {struct tnode * root; };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读