1、什么是结构体,为什么需要结构体?
结构体的意思就是结构化的数据,源于结构化的数据管理。是人们最初用数据描述世界的一种方式。也是面向对象的根源。在对具有多属性的事物的数据进行处理时,结构化的存储方式,使得处理方法和处理效率大大提高。从最初数据在内存中结构化的安排,到C语言抽象出结构体的概念,再到C++抽象出类的概念,程序世界的一个新的视角就此打开。程序的世界由一维的内存世界,变为多维的对象世界。
2、结构体的声明定义、初始化、使用。
定义例子如下:
- struct student{char name[10];int age;} struct student s1,s2; 和用普通类型定义变量一样
- struct student{char name[10];int age;} s1,s2; 在定义类型的同时,定义变量。
- struct {char name[10],int age;} s1,s2= {"jack",10}; 定义结构体时不给出结构体的名字,直接来使用(隐式定义)。
定义的时候初始化,可以直接通过{}给出初始值。否则的话就需要为里面的每一项进行赋值。
3、在了解了结构体之后, 我们不妨来思考这样一个问题:数据类型是什么?
对于数据类型, 我们是用来定义变量的,进而保存我们的数据。它规定了变量所要占用的字节数,以及如何对其内容进行存储。同样的结构体其实就是我们自己定义的类型。C语言允许我们根据实际的事物来定义特定的类型,然后定义这个类型的变量来保存事物的数据。
4、内存结构表示:
首先,结构体变量名就像普通的变量名一样。可以用&取地址, 如果用变量名表示一个结构体变量,那么它实际表示的是前四个字节的内容。所以,为了避免错误,我们使用的时候,就要找出里面的每一项进行使用。
其次,它在保存的时候,为了保持高的内存利用率和快速的存取操作,采用了内存对其的方式进行保存。也就是以域中长度最长的类型为单位申请空间(Visual Studio 的一种方式,可能并不通用,但它给了我们一个提高效率的思路)。
5、结构体使用的两种方式:
- 用变量名的方式使用:struct student s; s.a ;s.b; 其中,"."被称为成员分量运算符。
- 用结构体变量地址的方式:struct student *ps = &s;ps->a; ps->b;其中,"->"被称为指向运算符