打印
[DSP编程]

内存管理之结构体

[复制链接]
462|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-10-22 15:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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中的成员函数(成员方法)。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1827

帖子

18

粉丝