您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C十十 >> 辅导 >> 正文    
  C++基础(复合数据类型) 【注册男护士专用博客】          

C++基础(复合数据类型)

www.nanhushi.com     佚名   不详 

  好好学习了一下复合数据类型,结构体,联合,枚举。
  结构体的定义:
  struct name
  {
  int a;
  int b;
  }change;
  name是数据类型,即该结构体的数据类型。以后就可以直接用name来定义该数据类型的变量。change是该结构体类型的变量。
  结构体有几个特点:
  1 结构体是一种数据类型,并不占有内存。因此如果有如下定义:
  struct name{
  char a[10]=" abcd";
  int b;
  }change;
  这种写法是错误的,因为不能直接在结构体内对成员赋值。并没有内存。
  2 结构体所占内存的计算
  一般是各个成员类型的内存之和,但是还要注意与运行环境有关,像32位机,每次处理数据是四个字节四个字节的处理,因此对于结构体中成员类型内存应该是四的倍数,例如:
  struct name
  {
  int a;
  char b;
  char c;
  }change ;
  此时结构体的内存总和是4+4,8个字节。
  当交换三个变量的定义顺序,b a c顺序,此时的内存是4+4+4 =12个字节。
  但是 当成员中有一个short int 类型,此时就应该是2的倍数,因为short int 是两个字节,需要统一。
  3 变化结构体定义的形式 如
  (1 ) struct neme
  {
  int a;
  int b;
  }c;
  (2) struct
  {
  int a;
  }c;
  (3)typedef struct name
  {int a;
  int b;
  }c;
  上述三个例子中c 分别是 结构体变量,结构体变量,结构体类型名。一和二的不同是 第二种c是无名的变量。因此是独一无二的一个该类型。要想定义一个指针。可以在定义结构体的时候同时定义两个变量,一个 c *p; p=&c;此时便指向了c变量。这个时候用强制类型是不行的。
  此外还要注意对结构体成员的访问,(*p).a;或者p->a;
  联合
  union name
  {
  int a;
  char b;
  }change;
  共用体的结构定义和结构体的定义是一样的,只是内存分配的形式不一样,共用体是占用数据类型最大的类型的内存,
  如上面的例子,可知该共用体的内存是4个字节。
  因此对共用体赋值的时候会出现麻烦。例如:
  change.a=0;
  change.b=-7;
  cout<<change.a;
  此时的结果不是-7;共用体的系统内存非配是底地址靠齐,因此-7是占一个字节,最高位是符号位,但是对于整形的数来说并不是符号位,所以高位都是0,结果是256-7=249;所以对共用体的赋值一定要注意。
  枚举
  enum day{mon,tue,wed,thr};
  枚举类型,day是类型,mon 等是枚举值,系统默认从0开始赋值,后一个事前一个加一。考试大提示枚举值还可以自己来对其赋值。
  如:mon=4,tue,wed=7,thr
  此时枚举值是4 5 7 8
  可以定义枚举变量 day a;
  a=0;这样赋值是不对的,因为枚举类型的变量赋值只能是枚举值的值,因此a=mon,这个时候就是正确的。
  还有,枚举类型的内存, 都是4个字节。

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。