我所知道的结构体
来源:互联网 发布:php一句话木马下载 编辑:程序博客网 时间:2024/06/06 18:11
结构体struct
概念:可存储多种数据类型的用户自定义结构。
结构体定义格式:
struct TypeName{Type1 name1;Type2 name2;……TypeN nameN;};
结构体的声明定义分有两种:
外部声明和局部声明,后者是指在任一函数体内部(常为main()函数)定义的结构体,且只能在该函数内部使用(作用域),而前者是独立于任何函数之外的,可在任一程序位置使用。
创建变量:
TypeName XXX;
也可以在定义结构体的同时,于右花括号和分号之间声明变量,此方式常用于声明结构数组。
访问成员:
通过 成员运算符“·”访问,
如: XXX.name1
对了, 访问类成员函数的方式(如cin.get())就是 从结构体访问方式衍生出来的。
初始化:
一、在结构体定义的时候,不能存在初始化的行为,因为 未分配有内存空间,还没地址呢。
二、有三种常见的初始化办法:
I 直接访问单个成员数据并赋值,如XXX.name1 =…;
II 通过 花括号实现整体赋值,如 TypeName XXX = { …,…,…};
C++11 之后的版本还支持 把 赋值运算符“=”省略,且大括号内若是不包含任何数值,则默认全初始化为0,各个字节都赋值为0。
III 编译器会自动为 结构体 生成 一个赋值运算符重载函数,故
可以通过 赋值运算符“=”使用一个已有的结构来初始化另一个同类型的结构体。
常见应用:
结构数组——元素是同类型的结构体的数组,常用于表示具有相同性质的一个群体。
创建办法—— TypeName ArrayName [SIZE];
结构指针——指向结构变量的指针,存放的是结构变量的内存地址。
创建办法—— TypeName* PointName;
说明一点差异,变量是通过成员运算符“·”访问结构的成员数据的,而要是想通过指针访问到成员数据,则是通过 “指针->成员变量名;”实现的,如“PointName -> name1;”。
或者 也可以这样: “(*指针)·成员变量名”,如“(*PointName )·name1;”。
当然了,结构指针也是可以直接指向 结构数组的,这是只需要指向数组首地址即可。这就是所谓的 数组指针,更复杂的还有指针数组。
拓展说明:
结构体在作为函数参数调用时,要使用 引用传递;别通过值传递增大开销,影响很大的。
结构指针常见于 链表、树等数据结构的实现上。
还有一个知识点,就是 结构体常用于实现 位字段,在低级编程中。
待更,持续更新中……
- 我所知道的结构体
- 我所知道的共用体
- 我所知道的Eclipse
- 我所知道的幸福
- 我所知道的《魔兽世界》
- 我所知道的JavaBeans
- 我所知道的养生
- 我所知道的线程
- 我所知道的日本
- 我所知道的经济学
- 我所知道的Service
- 我所理解的结构体对齐
- 我所知道的java,我所感受的j2ee
- 我所知道的java的分类!
- 我所知道的专业搜索引擎
- 我所不知道的php
- 我所知道的.Net工作流软件
- 我所知道的JAVA工作流
- JAVA环境变量含义
- Win10&VS2017&OpenCV环境配置
- 学习javaScript的部分笔记,自己第一次写东西就当是个日记啦 一天进步一点点
- linux passwd命令解析示例
- Upgrade from Fedora 24 to Fedora 25, then Upgrade from Fedora 25 to Fedora 26
- 我所知道的结构体
- python3.5+ 安装wxpython
- 学习jquery部分笔记
- MongoDB Shell
- AtCoder Regular Contest 078 D
- 《自私的皮球》
- 学习ajax最近的笔记
- 2017-7-15未命名文件
- [深入浅出Cocoa]iOS网络编程之Socket