数据结构与算法——超基础!

阅读: 评论:0

数据结构与算法——超基础!

数据结构与算法——超基础!

前言 顺序是按照上课接触的知识点展开的

回顾C++部分

一、结构体攻略

1.什么是结构体

数组(Array),它是一组具有相同类型的数据的集合。但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为字符,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。

故而有了结构体的使用!结构体(关键字 Struct)可以用来存放一组不同类型的数据。结构体的定义形式为:

> struct 结构体名(即结构体类型){
>      结构体所包含的变量或数组
>       }

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或者数组都称为结构体的成员(Member)。
例如:

> struct stu{ 
> char name;   //姓名 
> int num;   //学号 
> int age;   //年龄 char
> group;   //所在学习小组 
> float score;   //成绩 
> };

stu为结构体名,它包含了5个成员,分别是name、num、age、group、score。

ps:注意大括号后面的分号不能少

2.结构体变量

既然结构体是一种数据,那么就可以用它来定义变量。例如:

struct stu stu1,stu2;

理解如下:
struct关键字声明了结构体类型stu,同时结构体类型stu定义了stu1stu2结构体变量。两个变量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

分析如下:

  1. 结构体是一种自定义的数据类型,是创建变量的模板,不占用内存空间;结构体变量才包含了实实在在的数据,需要内存空间来存储。即在 int t1,t2;这里不会分配内存,只有在StructTest my_Var; 才开始分配内存。
  2. 结构体和数据类似,也是一组数据的集合,整体使用没有太大意义。数据使用下标[]获取单个元素,结构体使用点号.获取单个成员。获取结构体成员的一般格式为:
    结构体变量.成员名;
  3. main()是程序的入口
  4. &表示取地址运算,故而&my_Var是表示取结构体变量my_Var的地址运算。
    还有一点,结构体的名字(这里是my_Var)就是结构体变量的起始地址,即给my_Var赋值时要先从t1开始赋值,my_Var的输出结果与my_Var.t1的相同的。
  5. 地址会默认转换为16进制,故而根据输出结果判定改结果为地址,故而明白&在此处的意思是取地址运算。


详情请看以下链接:
;timestamp=1584102600&ver=1&signature=4hyMUanj1SnNtBH7MCclQzBxh2TZijDM5z-fAGKDr7UNQ9PRuwp7tgfQ3cIkpZYfUaeYuxjcHKgQ5Naii0tYRt011eLpXbpBVeinPPu7yCLe2cIZBzw9frIDbj43rFmhA2PO0yZJkQCGyXuxE9NmPHB3HCT-QZtdNWY177U1Q=

3. 结构体在内存中的对齐规则

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 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23