手机
当前位置:查字典教程网 >编程开发 >C语言 >全面了解结构体、联合体和枚举类型
全面了解结构体、联合体和枚举类型
摘要:一.结构体:1.定义结构体类型:struct结构体{任意类型任意变量;任意类型任意变量;……};注意:这不是定义变量,而是自定义一种类型而已...

一. 结构体:

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语言switch中break语句的具体作用

节序问题:解析大小的端判定

深入解析C++中的引用类型

浅析stl序列容器(map和set)的仿函数排序

深入分析C++中类的大小

C++调试追踪class成员变量的方法

解析结构体的定义及使用详解

关于C++使用指针 堆和栈的区别分析

基于结构体与指针的详解

sigsetjmp的用法总结

精品推荐
分类导航