内存管理之结构体

1、数据结构这门学问的意义
 数据结构就是研究数据如何组织(在内存中排布),如何加工的学问
2、最简单的数据结构:数组
 为什么要有数组?
 因为程序中有好多个类型相同、意义相关的变量需要管理,这时候如果用单独的变量来做程序的话,
 就会比较混乱,所以用数组来管理会更好。
 譬如: int  ages[20];
3、数组的优势和缺陷
 优势:数组比较简单,访问可以用下标,并且可以随机访问。
 缺陷:1.数组中的所有元素必须相同 2.数组的大小必须定义的时候给出,而且一旦确定不能更改。
4、结构体
 结构体的出现就是为了解决数组的第一个缺陷:数组中的所有元素必须相同。
 譬如我们要管理三个学生的年龄:
 第一种用数组:     int  ages[3];
 第二种用结构体:  
 struct  ages
 {
  int age1;
  int age2;
  int age3;
 }
 struct ages age;
 这个时候就是用数组表示比较好;但是如果数据包中的元素类型不一样,这时就需要用结构体而不能用数组了。
 struct people
 {
  int age;          //人的年龄
  int height;       //人的身高
  char name[20];        //人的名字
 }
 这个时候数据包中有多个类型的元素,用数组就不能表示了,就要用结构体。
5、结构体内嵌指针实现面向对象
面向过程和面向对象。
总的来说:C语言是面向过程的,但是C语言写出来的Linux系统是面向对象的。
非面向对象的语言,也能实现面向对象的代码。只能说如果用面向对象的语言来实现面向对象对更加简单、清晰、直观。
用C++、Java等面向对象的语言来实现面向对象会简单一些,因为语言本身帮助我们做了很多事情;但是
用C来实现面向对象很麻烦,而且不容易理解,这也就是为什么大多数学过C语言却看不懂Linux内核代码的原因。
struct s
{
 int age;               //普通变量
 void  (*pFunc)(void);        //函数指针,指向void func(void)这类的函数 
}
使用这样的结构体就可以实现面向对象。
这样包含了函数指针的结构体就类似于面向对象中的class,结构体中的变量类似于class中的成员变量,结构体中的函数指针
类似于class中的成员函数(成员方法)。

原文地址:https://www.cnblogs.com/jiangtongxue/p/11350361.html