内存管理之结构体

内存管理之结构体

数据结构这门学问的意义

      数据结构就是研究数据如何组织(在内存中排布),如何加工的学间。...4.1.6.2、最简单的数据结构:数组

      为什么要有数组?因为程序中有好多个类型相同、意义相关的变量需要管理n这时候如果用单独的变量来做程序看起来比较乱,用数组来管理会更好管理。譬如int ages[20];

数组的优势和缺陷

      优势:数组比较简单,访问用下标,可以随机访问。

      缺陷: 1数组中所有元素类型必须相同; 2数组大小必须定义时给出,而且一旦确定不能再改。
 

结构体隆重登场

结构体发明出来就是为了解决数组的第1个缺陷,数组中所有元素类型必须相同

我们要管理3个学生的年龄(int类型),怎么办?

第一种解法,用数组 int  ages[3];

第二种解法,用结构体

struct ages

{

  int agel;

  int age2;

  int age3;

};

struct ages age; 

分析总结:在这个示例中,数组要比结构体好。但是不能得出结论说数组就比结构体好,在包中元素类型不同时就只能用结构体而不能用数组了

struct people

{

  int age; //人的年龄

  char name [20] ; //人的姓名

  height; //人的身高

};

因为people的各个元素类型不完全相同,所以必须用结构体,没法用数组。

 

结构体内嵌指针实现面向对象面向过程与面向对象

总的来说:c语言是面向过程的,但是c语言写出的linux系统是面向对象的。

非面向对象的语言,不一定不能实现面向对象的代码。只是说用面向对象的语言来实现面向对象要更加简单一些直观一些、无脑一些。

用C++、Java等 面向对象的语言来实现面向对象简单一些,因为语言本身帮我们做了很多事情,但是用c来实现面向对象很麻烦,看起来也不容易理解,这就是为什么大多数人学过c语言却看不懂linux内核代码的原因。

struct 3

{

  int age; //普通变量

  void (*pFunc) (void); //函数指针,指向void func (void)这类的函数

}

使用这样的结构体就可以实现面向对象。

这样包含了函数指针的结构体就类似于面向对象中的class,结构体中的变量类似于class中的成员变量,结构体中的函数指针类似于class中的成员方法。

转载于:https://www.cnblogs.com/sanshijvshi/p/10264539.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值