C|不完全类型与结构体的自指向指针

不完全类型指“函数之外、类型的大小不能被确定的类型”。

总结一下,C 的类型分为:

① 对象类型(char、int、数组、指针、结构体等)

② 函数类型

③ 不完全类型:结构体标记的声明、void*。

以上的三种类型都可以派生为指针类型。

对于男性(Man),他可能有妻子(wife)。如果是未婚男性,wife 就是NULL。所以,Man 这样的类型,可以声明成下面这样:

struct Man_tag { struct Woman_tag *wife; /*妻*/};

作为妻子,可以这样声明:

struct Woman_tag { struct Man_tag *husband; /*夫*/};

这种情况下,struct Man_tag 和 struct Woman_tag 是相互引用的,所以无论先声明哪一边都很麻烦。

可以像下面这样通过先声明结构体标记来回避以上问题:

struct Woman_tag; // 将 tag 提前声明struct Man_tag { struct Woman_tag *wife; /* 妻 */};struct Woman_tag { struct Man_tag *husband; /* 夫 */};

在某些环境中,结构体必须使用 typedef,所以,

typedef struct Woman_tag Woman; // 提前对 tag 进行类型定义typedef struct { Woman *wife; /* 妻 */} Man;struct Woman_tag { Man *husband; /* 夫 */};

对这种情况,在 Woman 类型的标记被声明的时候,还不知道其内容,所以无法确定它的大小。这样的类型就称为不完全类型。

因为不能确定大小,所以不能将不完全类型变成数组,也不能将其作为结构体的成员,或者声明为变量。但如果仅仅是用于取得指针,是可以使用不完全类型的。

对于指针声明来说,只要其声明的类型存在(基本类型,或已定义或声明的复合类型),便可以从其派生出指针类型。

上面的结构体 Man,就是将 Woman 类型的指针作为它的成员。之后,在定义 struct Woman_tag 的内容的时候,Woman 就不是不完全类型了。

在 C 标准中,void 类型也被归类为不完全类型。

void*类型表示为类型待定的指针,可以被赋值一个任何类型的地址,只要在指针本身操作或操作指针的指向目标时,类型显式强制转换为原始或期望的类型即可。 指针可以指向为不完全类型,同时,指针不论其目标类型如何,其大小都是固定的一个字长,所以在结构体定义中,可以定义一个自指向的指针,这样的指针并不影响结构体的整体内存分配或布局,所以被定义为链式存储(用来关联数据关系)的语法机制:

struct Node{ int data; struct Node* next; // 指针本身的大小确定(一个字长),与目标类型无关};

ref

前橋和弥《征服C指针》

-End-

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年7月27日 12:21
下一篇 2022年7月27日 12:21

相关推荐

  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 什么是内容营销策略如何策划一套成功的内容营销策略

    很多时候,营销人员会在创作营销内容时感到沮丧,这也是很多企业至今没用好数字化营销工具的重要原因之一。 举个例子,您可能会花上数小时期待制作一些令人惊叹的东西,实际却是得到很少的受众…

    2022年11月25日
  • 园属于什么结构(园的结构和部首)

    园 yuán:全包围结构,平稳端正中稍带左收右展。 外部“口” 体态端庄,稍抗肩,稍带左轻右重。左竖起笔稍抖,竖身勿重,稍左斜,垂露收笔;第二笔横折压着左竖起笔,横画稍抗肩,不要重…

    2022年11月24日
  • 1千克等于多少磅

    克,此定义在1958年被美国以及其他英联邦会员国承认换算回来,一千克等于262磅,一磅等于037千克英国在1963年开始,依据度量衡法案的规;1 磅=16 盎司=04536 千克 …

    2022年11月24日
  • 《原神》画外旅照青植之篇第五天怎么过?画外旅照第五天过关方法

    原神的画外旅照活动每天都会更新一篇,玩家完成对应拍照任务就可以获得奖励。有玩家想知道原神画外旅照青植之篇第五天怎么过,下面就带来原神画外旅照第五天过关方法,感兴趣的小伙伴一起来看看…

    2022年11月21日
  • 直播带货话术:万能暖场互动顺口溜大全(直播带货流程话术)

    现在直播带货这么火,人人都想来尝试一下,但是直播这个行业也不是每个人都合适、都可以做的。我们在看直播的时候,有些主播的话术让人很舒服,大家就会捧场,相对的,有的人直播就显得很尴尬。…

    2022年11月18日
  • 京东店铺类型有哪些京东入驻有什么资质要求

    今天的互联网发展迅速,让传统企业有了更多选择,但也同样也对刚触网的商家增添了许多迷茫,近日知舟电商就收到很多商家朋友询问京东入驻相关问题,今天知舟君就给大家分享下。 一.京东入驻准…

    2022年11月18日
  • 手淘搜索是自然流量吗(手淘搜索流量怎么提高)

    作为一个卖家,我们都应该知道,现在店铺的流量大部分来自移动端,也就是我们说的手机端流量。随着智能手机的发展及网速的提升,手机购物已成为常态。而淘宝也一直尝试着从一个购物平台往社交平…

    2022年11月18日
  • 暴雪将在中国大陆暂停多数游戏服务 网易回应:将为玩家服务到最后一刻

    11月16日,暴雪娱乐宣布与网易协议将到期,将在中国大陆暂停多数游戏服务。 针对该消息,网易表示,网易一直在尽最大努力和动视暴雪公司谈判,希望推进续约。经过长时间的谈判,我们仍然无…

    2022年11月17日
  • 怎么删除自己的追评(淘宝追评可以删除吗)

    一、淘宝店铺每个评价类型的处理方案都是不同的,那具体哪些评价类型该如何区分呢? 1、主评为好评时:不支持修改或者删除评价的,若中评/差评改为好评,也不可修改或删除 ; 2、当主评为…

    2022年11月17日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息