您的位置:首页 > 编程语言 > C语言/C++

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

2017-04-18 22:49 225 查看
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;其中,"->"被称为指向运算符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C C++ struct 结构体