zoukankan      html  css  js  c++  java
  • 共用体类型,结构体类型

    1.共用体类型

    1.1 含义:用同一段内存存放不同类型的变量,也就是使用覆盖技术,后一个数据覆盖前面的数据,使几个不同的变量共享同一段内存的结构成为共用体。往往在数据处理中,有时需要对同一段内存空间安排不同的用途,这时用共用体类型比较方便。

    1.2 形式

      union  Data

    {

      int i;

     char ch;

     float f; 
    }a,b,c;

    1.3 引用共用体变量的方式

    如a.f;

    1.4 共用体类型的数据特点

     (1).共用体与结构体非常相似,结构体变量所占内存长度等于各个成员占内存长度的和,每个成员分别占有自己的内存,而共用体变量所占内存长度等关于最长的成员的长度。

     (2).同一段内存可以存放几种不同类型的成员,但每一瞬间只能存放其中一个成员。

     (3).可以对共用体变量初始化,但初始化表中只能有一个常量,union Data a = {16}。

     (4).共用体变量中起作用的是最后一次被赋值的成员变量。

     (5)共用体变量的地址和它的各个成员的地址都是同一地址。

     (6)不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,如a = 1 不对。

     (7)可以使用共用体变量的指针做函数参数。

     (8)共用体类型可以出现在结构体类型定义中,也可以定义共用体数组,繁反之也可以。

    举一个简单的例子如下:

     1 #include<stdio.h>
     2 struct
     3 {
     4     int num;
     5     char name[10];
     6     char sex;
     7     char job;
     8     union
     9     {
    10         int clas;//成员班级
    11         char posion[10];//成员职务
    12     }category;    //成员共用体变量
    13 }person[2];    //定义结构体数组,有两个元素
    14 int main()
    15 {
    16     int i;
    17     for (int i = 0; i < 2; i++)
    18     {
    19         printf("输入两个成员的数据信息:");
    20         scanf_s("%d %s %c %c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
    21         if (person[i].job == 's')
    22             scanf_s("%d",&person[i].category.posion);
    23         else if (person[i].job == 't')
    24             scanf_s("%s", &person[i].category.posion);
    25         else
    26             printf("输入有误");
    27     }    
    28     printf("
    ");
    29     printf("详细信息如下:");
    30     for (int i = 0; i < 2; i++)
    31     {
    32         if (person[i].job == 's')
    33             printf("%-6d,%-6s%,%-6c,%-6d
    ", person[i].num, person[i].name, person[i].sex, person[i].job, person[i].category.clas);
    34         else
    35             printf("%-6d,%-6s%,%-6c,%-6d
    ", person[i].num, person[i].name, person[i].sex, person[i].job, person[i].category.posion);
    36     }
    37     return 0;
    38 }
    View Code

    2.定义和使用结构体变量

      含义:由不同类型数据组成的组合型数据结构成为结构体。

    2.1 建立结构体

    1 struct MyStruct
    2 {
    3     long num;
    4     float score;
    5         char name[20];
    6         int  age;
    7     struct MyStruct *netx;
    8 };

    2.2 结构体变量的定义

    (1).struct 结构体名

             {

             }变量名列表

    如:

    1 struct MyStruct
    2     {
    3       long num;
    4       float score;
    5       struct MyStruct *netx;
    6     }student1,student2;
  • 相关阅读:
    VBA键码常数
    枚举
    海龟交易法则及头寸
    HQL.TOP
    jquery.cookie
    机械操作产品分析.
    Repeater排序2
    Repeater排序
    json
    LoginStatus注销控件
  • 原文地址:https://www.cnblogs.com/xyzyj/p/6538945.html
Copyright © 2011-2022 走看看