结构的声明

完整的声明

通常,结构体可以使用以下几种方式进行声明:

  

前三种虽然可行,但实际中考虑到方便和实际数据结构的需要,都较少使用。对于使用了tag的声明,将来需要更多的该结构体变量时,可以简单的使用"struct tag var-list;"进行新的结构体变量声明,这比仅有var-list而没有tag的声明稍微方便了一些,但像第三种这样既有tag又有var-list的声明没有带来比第二种更多的任何好处,反倒显得不那么利索。

实际中使用比较多的是最后两种方式,它们定义了新的类型new_type,以后再有需要这些已经定义过新类型的结构体变量时,只需要像定义简单数据类型的变量一样使用"new_type var-list;"即可。
这里要说的是,第五种方式有比第四种方式更方便的一个情形是当new_type需要进行自引用时,例如:

 

 
原本是想创建类型名self-ref,但是,它不可能成功。因为member-list中的新的类型名self-ref在直到它被使用之前仍未被定义!
这时,使用第五种声明的方式就能很方便的解决这个问题:
  

现在,包含有自引用的新类型名self-ref就能被成功创建了。

不完整的声明

对于需要声明一些相互间存在依赖关系的结构,和自引用结构一样,至少有一个结构必须在另一个结构内部以指针的形式存在。但是需要先声明哪个结构呢?
答案是任意先声明哪个!但前提是使用不完整声明,即先声明一个作为结构标签的标识符。接下来将这个标签用在不需要知道这个结构长度的声明中,这样就完成了其中一个结构的声明。剩下的另一个就跟普通的结构完全一样了。例如:

 


转自:http://blog.mcuol.com/User/pidoo/Article/41855_1.htm

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值