全面了解结构体、联合体和枚举类型
一. 结构体:
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是一个整数的大小。
以上这篇全面了解结构体、联合体和枚举类型就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
栏 目:C语言
下一篇:可读可执行的C语言简历源文件
本文标题:全面了解结构体、联合体和枚举类型
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/2174.html
您可能感兴趣的文章
- 01-10数据结构课程设计- 解析最少换车次数的问题详解
- 01-10数据结构课程设计-用栈实现表达式求值的方法详解
- 01-10深入理解结构体中占位符的用法
- 01-10C数据结构之双链表详细示例分析
- 01-10C数据结构之单链表详细示例分析
- 01-10浅析C语言位域和位段
- 01-10浅析C++中结构体的定义、初始化和引用
- 01-10一道超经典的C++结构体的题目
- 01-10全面解析C++中的new,operator new与placement new
- 01-10shared_ptr线程安全性全面分析
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10C#中split用法实例总结
- 04-02jquery与jsp,用jquery
- 01-10SublimeText编译C开发环境设置
- 01-10delphi制作wav文件的方法
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-11ajax实现页面的局部加载
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10使用C语言求解扑克牌的顺子及n个骰子