码迷,mamicode.com
首页 > 编程语言 > 详细

C++ Struct

时间:2015-10-01 12:45:08      阅读:149      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!