前言 顺序是按照上课接触的知识点展开的
数组(Array),它是一组具有相同类型的数据的集合。但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为字符,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。
故而有了结构体的使用!结构体(关键字 Struct)可以用来存放一组不同类型的数据。结构体的定义形式为:
> struct 结构体名(即结构体类型){
> 结构体所包含的变量或数组
> }
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或者数组都称为结构体的成员(Member)。
例如:
> struct stu{
> char name; //姓名
> int num; //学号
> int age; //年龄 char
> group; //所在学习小组
> float score; //成绩
> };
stu为结构体名,它包含了5个成员,分别是name、num、age、group、score。
ps:注意大括号后面的分号;
不能少
既然结构体是一种数据,那么就可以用它来定义变量。例如:
struct stu stu1,stu2;
理解如下:
struct
关键字声明了结构体类型stu
,同时结构体类型stu
定义了stu1
和stu2
结构体变量。两个变量stu1
,stu2
,他们都是stu
类型,都分别由5个成员组成(name、num、age、group、score)。注意关键字struct
不能少。
这里再举个例子:
#include <iostream>
using namespace std;
struct StructTest //自定义结构体类型
{int t1; //创建结构体成员int t2;
};
//typedef StructTest TEST;int main()
{StructTest my_Var; //定义结构体变量//TEST my_Var;cout << &my_Var << " " << &my_Var.t1 << " " << &my_Var.t2 << endl;return 0;
}
输出结果:
006FFCF0 006FFCF0 006FFCF4
分析如下:
- 结构体是一种自定义的数据类型,是创建变量的模板,不占用内存空间;结构体变量才包含了实实在在的数据,需要内存空间来存储。即在
int t1,t2;
这里不会分配内存,只有在StructTest my_Var;
才开始分配内存。- 结构体和数据类似,也是一组数据的集合,整体使用没有太大意义。数据使用下标
[]
获取单个元素,结构体使用点号.
获取单个成员。获取结构体成员的一般格式为:
结构体变量.
成员名;- main()是程序的入口
&
表示取地址运算,故而&my_Var
是表示取结构体变量my_Var
的地址运算。
还有一点,结构体的名字(这里是my_Var
)就是结构体变量的起始地址,即给my_Var
赋值时要先从t1
开始赋值,my_Var
的输出结果与my_Var.t1
的相同的。- 地址会默认转换为16进制,故而根据输出结果判定改结果为地址,故而明白
&
在此处的意思是取地址运算。
详情请看以下链接:
;timestamp=1584102600&ver=1&signature=4hyMUanj1SnNtBH7MCclQzBxh2TZijDM5z-fAGKDr7UNQ9PRuwp7tgfQ3cIkpZYfUaeYuxjcHKgQ5Naii0tYRt011eLpXbpBVeinPPu7yCLe2cIZBzw9frIDbj43rFmhA2PO0yZJkQCGyXuxE9NmPHB3HCT-QZtdNWY177U1Q=
c++中基本数据类型的内存字节占比:
具体的对其规则详见下方链接:
此处谈一谈上方链接的最后一道题:
struct X{char a;int b;double c;};struct Y {char a;X b;
};
经测试,可知siz
本文发布于:2024-01-28 20:21:53,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170644451710037.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |