全面了解结构体、联合体和枚举类型

 更新时间:2020年4月25日 17:34  点击:2346

一. 结构体:

1. 定义结构体类型:

struct 结构体
   {
       任意类型 任意变量;
       任意类型 任意变量;
       ……
};

注意:这不是定义变量,而是自定义一种类型而已。

struct student
   {
    char name[10];//学生姓名
            int height;//学生身高
            bool sex;//学生性别 假设0表示女,1表示男。
          };//此处分号不能少。

2. 定义结构体变量。

类型定义好以后,则可以定义该类型的变量。

定义结构体变量:

struct student a,b;// struct可以省略。
可以在定义结构体变量的时候赋值。
如student a={”liudehua”,172,1},b={“lixiaolong”,172,1};
也可以在定义结构体变量以后赋值,但注意不能再用{}。

如:

student a,b;
a={”liudehua”,172,1},b={“lixiaolong”,172,1};//这是错误的。

而应该是:
strcpy(a.name,”liudehua”);

a.height=172;
a.sex=1;

3.可以在定义结构体类型的时候同时定义结构体变量并赋值。

struct student
   {
    char name[10];//学生姓名
            int height;//学生身高
            bool sex;//学生性别 假设0表示女,1表示男。
         
} a={”liudehua”,172,1},b={“lixiaolong”,172,1};

4.访问结构体:

访问结构体成员要用直接成员运算符“.”或间接成员运算符“->”。
     student a={”liudehua”,172,1};
     cout<<a.name<<a.height<<a.sex;
     student *p=&a;
cout<<p->name<<p->height<<p->sex;

对于结构体变量,访问其中的成员采取“结构体变量.成员”的形式;而对于结构体指针,访问它所指向的结构体变量中的成员,则采取“结构体指针->成员”形式。

二.联合体

联合体也是一种自定义的复合类型,它可以包含多个不同类型的变量。这些变量在内存当中共用一段空间。这段空间的size就是各变量中size最大的那个变量。

1定义联合体类型:

union myunion
{int num1;
Double num2;
Float num3;
};

定义了一个联合体类型myunion。
myunion a,b;//定义了两个myunion型变量。
也可以在定义联合体类型的时候定义联合体变量。

如:

union myunion
{int num1;
Double num2;
Float num3;
}a,b;

a占用的空间有多大呢?
Sizeof(a)结果即为8,即myunion占用8个字节,和double型变量相同。
注意:任一时刻,只能访问结构体里面的一个变量。

a.num1=2;
      a.num2=3.154;
myunion *p;
p=&a;
p->num3=5.6;

三.枚举类型

1.枚举类型的定义:
枚举类型也是一种自定义的复合类型。不过,枚举类型中的成员都是常量。

enum color

   red,
   green,
   blue,
   white,
   black
};

枚举类型中的成员默认值为从0开始,依次序递增。此时red==1,green为2,blue为3,white为4,black为5.
也可以改变起默认值。

enum color

   red=1,
   green=3,
   blue=5,
   white,
   black
};

没有初始化的枚举类型成员的值将在它前面的成员基础上递增。
所以,white的值为6,而black的值为7.

2.定义枚举变量:

color a1,a2;

3.给枚举变量赋值:
   a1=red;
   a2=blue;
cout<<a1<<a2;//输出结果是15

虽然枚举常量的值整数,但是不能直接将整数值赋给枚举变量。

a1=1;//这是不对的。因为类型不匹配。一个是整型,一个是枚举类型。
a1=(color)1;//正确

枚举变量的size是一个整数的大小。

以上这篇全面了解结构体、联合体和枚举类型就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • 浅析C# 结构体struct

    这篇文章主要介绍了C# 结构体struct 的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-11-03
  • C#编程中枚举类型的使用教程

    这篇文章主要介绍了C#编程中枚举类型的使用,是C#入门学习中的基础知识,需要的朋友可以参考下...2020-06-25
  • 关于C#结构体 你需要知道的

    这篇文章主要介绍了关于C#结构体的相关知识,以及使用方法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下...2020-06-25
  • TypeScript魔法堂之枚举的超实用手册

    这篇文章主要介绍了TypeScript魔法堂之枚举的超实用手册,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-29
  • 基于C#调用c++Dll结构体数组指针的问题详解

    下面小编就为大家分享一篇基于C#调用c++Dll结构体数组指针的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • 快速了解c# 结构体

    这篇文章主要介绍了c# 结构体的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-11-03
  • C#中结构体和字节数组转换实现

    这篇文章主要介绍了C#中结构体和字节数组转换实现,本文直接给出了字节数组与结构体的转换代码,代码中包含详细注释,需要的朋友可以参考下...2020-06-25
  • C# 枚举的使用简介

    这篇文章主要介绍了C# 枚举的简单使用,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...2021-03-13
  • go嵌套匿名结构体的初始化详解

    这篇文章主要介绍了go嵌套匿名结构体的初始化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-16
  • C#中变量、常量、枚举、预处理器指令知多少

    这篇文章主要介绍了c#共有其中变量类型有:静态变量、实类变量、数组元素、数值参数、引用参数、输出参数和局部变量,需要的朋友可以参考一下...2020-06-25
  • C#如何给枚举类型增加一个描述特性详解

    这篇文章主要给大家介绍了关于C#如何给枚举类型增加一个描述特性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • 详细了解C# 枚举与位枚举

    这篇文章主要介绍了C# 枚举与位枚举的相关资料,文中讲解非常细致,帮助大家更好的理解和学习枚举和位枚举,感兴趣的朋友可以了解下...2020-11-03
  • 枚举窗口句柄后关闭所有窗口示例

    这篇文章主要介绍了关闭所有窗口的方法,原理是枚举所有窗口句柄,然后发送WM_CLOSE消息来关闭窗口,需要的朋友可以参考下...2020-04-25
  • 全面了解结构体、联合体和枚举类型

    下面小编就为大家带来一篇全面了解结构体、联合体和枚举类型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • Go遍历struct,map,slice的实现

    本文主要介绍了Go语言遍历结构体、切片和字典的方法,对大家的学习具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-06-13
  • C#从foreach语句中枚举元素看数组详解

    这篇文章主要给大家介绍了关于C#从foreach语句中枚举元素看数组的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。...2020-06-25
  • 字符串转换成枚举类型的方法

    字符串可以向int, bool等类型转变,但是字符串是否可以向枚举转变呢?一起看下边的例子...2020-06-25
  • C#语言基础——结构体和枚举类型全面解析

    下面小编就为大家带来一篇C#语言基础——结构体和枚举类型全面解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C语言热门考点结构体与内存对齐详解

    在掌握基本的结构体使用后,我们在面试和大型比赛中常常会遇到一个热门考点:结构体内存对齐,也就是计算结构体大小。接下来请跟着笔者一起来学习这块知识点吧...2021-10-23
  • C#枚举数值与名称的转换实例分享

    在应用枚举的时候,时常需要将枚举和数值相互转换的情况。有时候还需要转换成相应的中文。下面介绍一种方法...2020-06-25