C/C++ 结构体的内存结构说明

来源:互联网 发布:ivc电子目录软件 编辑:程序博客网 时间:2024/06/05 08:23

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 = &sps->a; ps->b;其中,"->"被称为指向运算符
0 0
原创粉丝点击