首页 > 编程语言 > 详细

C++ Struct

时间:2015-10-01 12:44:06      阅读:251      评论:0      收藏:0      [点我收藏+]

一.为何

struct tagNode                  struct tagNode

{                         {

  ElemType data;                   ElemType data;

  struct tagNode LeftNode;             struct tagNode* LeftNode;

  struct tagNode RightNode;            struct tagNode* RightNode;

};//无法通过编译                  };//正常通过编译

C/C++采用静态编译模型。程序运行时,结构大小会在编译后确定。程序要正确编译,编译器必须知道一个结构所占用的空间大小。除此之外还有一个逻辑方面的问题,在这种情况下,想想可以有LeftNode.LeftNode.LeftNode.LeftNode这类错误也称为类和结构的递归定义错误

如果采用指针形式,指针的大小与机器的字长有关,不管是什么类型,编译后指针的大小总是确定的,所以这种情况下不需要知道结构struct tagNode的确切定义。例如,在32位字长的CPU中,指针的长度为4字节。所以,如果采用指针的形式,struct tagNode的大小在其编译后即可确定,为sizeof(int)+4+4.对于对象形式的struct tagNode定义,其长度在编译后是无法确定的。

 

C++ Struct

原文:http://www.cnblogs.com/fenghuan/p/4850839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!