c++中的构造数据类型----结构体
c++中的构造数据类型----结构体
构造数据类型:
无论是基本数据类型还是数组类型都仅仅描述了事物某一方面的特性, 但是, 一种事物往往具有多方面的属性, 如一个同学有学号, 姓名, 性别, 年龄等属性。c++中的构造数据类型简单点理解就是将一个或者几个数据类型组合起来的。
(在回顾一下比如int、float、double等,叫做基础类型,或内置类型,而由这些类型做成的、含有多个的组合类型,称作构造类型,)
C++中,构造类型有一下几种:
数组类型、结构体类型、共用体类型、枚举类型、用户自定义数据类型(类)
这篇文章主要记录c++结构体的相关知识点
1、结构体之引用结构体成员变量
2、结构体数组、结构体指针
3、结构体的嵌套
4、结构体之结构体作为函数参数
一、结构体
1、简单介绍
结构体是一个可以包含不同数据类型的结构、是一种可以自己定义的数据类型
有下面特点:
1、可以在一个结构中申明不同的数据类型
2、相同结构的结构体变量是可以相互赋值的
(比较下结构体和数组类型:
数组是单一数据类型的 数据集合,它本身不是数据类型但是结构体是。数组名称是常量指针,所以不可以作为左值进行运算,即数组之间不可以通过数组名称相互赋值,尽管数组数据类型和数组大小完全相同
)
2、结构体的定义
与一般的基本数据类型定义一样,结构体也需要一个关键字struct关键字,定义语法如下:
struct 结构体名{ 结构体成员变量列表
//注释:结构体成员变量用于描述这个结构体的一些特性,它可以为基本数据类型(int)、数组、指针类型、结构体。此成员变量不可以重名};
例子1:struct student { //成员列表 string name; //姓名 int age; //年龄 int score; //分数 }
例子2:成员变量是结构体数据类型的情况
例子2:
struct Point { //成员列表 double x; // x点坐标 double y; //y点坐标}坐标轴上直线的信息
struct Line{struct Point StartPoint;
struct Point EndPoint;
}
3、通过结构体创建变量
通过结构体创建变量的方式有三种:1、先定义结构体类型,在单独定义变量类型
struct 结构体名 变量名
struct student { //定义时候struct 关键字不可以省略
//成员列表
string name; //姓名
int age; //年龄
int score; //分数 }int main() {struct student stu; //struct 关键字可以省略stu.name = "小明"; //结构体变量利用操作符 ''.'' 访问成员stu.age = 6; stu.score = 100; //说明:struct student是结构体类型,stu结构体变量。此处的struct student相当于用int定义变量的时候,和int类型名是一样的。
2、直接在结构体变量名之后定义
struct 结构体名 变量名 = { 成员1值 , 成员2值…}
struct student {
//成员列表
string name; //姓名
int age; //年龄
int score; //分数 }int main() {struct student stu = { "小明",6,100 };}
3、 定义结构体时顺便创建变量
struct student { //成员列表 string name; //姓名 int age; //年龄 int score; }stu; //结构体变量创建方式3 int main() {stu.name = "小明"; stu.age = 6; stu.score = 100; }
4、使用typedef函数说明一个结构体类型名后再用新类型名来定义变量
为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等),(注意与#define的区别,typedef 是用来定义一种类型的新别名的,它不同于宏#define,宏是简单的字符串替换)
例:1 typedef int INTEGER;为int定义了一个新的名字INTEGER,也就是说INTEGER与int是同义词也可以为结构体定义一个别名
typedef struct student STUDENT;
或者typedef struct student{int num;}STUDENT;
上述两条语句是等价的,二者都是为struct student结构体类型定义了一个新的名字STUDENT,即STUDENT与struct student是同义词STUDENT stu1,stu2;struct student stu1, stu2;
c++中的构造数据类型----结构体相关推荐
- C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例
C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...
- C++编程:复合数据类型—结构体
实际应用中,我们往往希望把很多不同的信息组合起来,"打包"存储在一个单元中.比如一个学生的信息,可能包含了姓名.年龄.班级.成绩-这些信息的数据类型可能是不同的,所以数组和vect ...
- python高级ctypes数据类型—结构体
结构体在ctypes中通过类进行定义.用于定义结构体的类需要继承自ctypes的Structure基类,而后通过定义类的_fields_属性来定义结构体的构成._fields_属性一般定义为一个二维的 ...
- Linux中表示“时间”的结构体和相关函数
转载于:http://blog.chinaunix.net/uid-25909722-id-2827364.html Linux中表示"时间"的结构体和相关函数 2011-09-1 ...
- MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示
MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示 解决办法: 1.确保已经将顶层头文件stm32f10x.h添加至当前你所写的文件内: 2.检查你自己写的文件是否已经加载到工 ...
- crash中使用list遍历结构体
list [[-o] offset][-e end][-[s|S] struct[.member[,member] [-l offset]] -[x|d]] [-r|-h|-H] start 如下介绍 ...
- Swift中的类和结构体(2)
Swift中的类和结构体(2) 异变方法 方法调度 影响函数派发方式 异变方法 在Swift中,值类型属性不能被自身的实例方法修改,编译器不会通过编译,报错Left side of mutating ...
- java中的类跟结构体_C#中的结构体与类的区别
经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字str ...
- 结构体中引用另一结构体
结构体中引用另一结构体 1.自引用结构体 1.1不使用typedef时 2.1使用typedef时 2.互引用结构体 结构体引用主要分为自引用和互引用.我主要以实例展示如何使用,不会过多赘述太多,想必 ...
最新文章
- iOS 关于pods-frameworks.sh:permission denied报错的解决
- eclipse 创建maven 项目 动态web工程完整示例
- linux内核中的GPIO系统之(2):pin control subsystem
- 齐博地方门户系统v5_社区团购小程序哪个好?-小猪V5社区团购系统,社区团购系统,社区团购小程序,专注社区团购系统研发...
- 第一个极小的机器学习的应用
- jms、amqp、mqtt区别与联系
- 开发辅助 | 阿里图标库iconfont入门使用
- Mac安装软件报“打不开。。。,因为它来自身份不明的开发者”的解决办法
- 【高效能人士的七个习惯】 第二部分 个人的成功:从依赖到独立(史蒂芬·柯维)...
- NSString copy or not (strong)?
- 消耗报表数据库呈现了流动变乱的回滚段破损(三)
- urlrewrite配置
- 德普图拉在北京香山AI分论坛的主持词
- 报表分析工具有哪些?常见开源报表工具和商用报表工具介绍
- D2RQ 的安装和基本使用
- Python绘制股票K线图
- Ai智能语音机器人系统搭建和私有云部署
- 群晖 使用SMB3进行局域网传输双倍叠加网速下踩的一些坑
- 深度学习实现安全帽佩戴的检测
- 《中国综合算力指数》《中国算力白皮书》《中国存力白皮书》《中国运力白皮书》在首届算力大会上重磅发出