暑期苏嵌嵌入式Linux两周短期学习第六结

一、课程笔记:
1、函数:
函数的三要素:函数名、形参、返回值
函数名:命名–>自注释性 动词+名词
函数参数:实参是什么类型,形参就要定义成什么类型;<传数组名>
传一维数组名,用元素的指针;
传二维数组名,用一维数组指针;
传三维数组名,用二维数组指针;
传指针数组名,用指针的指针;
传地址和传值:什么时候传地址什么时候传参?
a.当只使用不修改实参变量的值,传实参变量名;func(实参变量名)
b.当使用即修改实参变量的值,传实参变量的地址;func(&实参变量名)
2、内存管理:
(1)操作系统内存管理:总的来说,操作系统内存管理包括物理内存管理和虚拟内存管理。1.物理内存管理:包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。2.虚拟内存管理:虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。这个系列主要使用linux内存管理来具体说明:linux内存管理
(2)常见的内存错误:
内存泄露、内存碎片、内存空洞
(3)malloc/free
(4)内存池(将使用多次malloc操作改变成只使用一次)malloc/free是一个开销非常大的操作
3、关键字:
(1)register:
作用:尽可能的将数据保存到CPU的寄存器中,提高程序的执行效率(省去了CPU通过总线从内存中抓取数据的时间)
(2)static:
①static修饰局部变量:延长了局部变量的生命周期,程序结束之后再释放(只执行一次)
②static修饰全局变量:静态全局变量,该变量不能再其他文件中访问
③static修饰函数:该函数只能被本文件的函数调用,不能被其他文件访问
(3)extern:

①不需要建立存储空间时使用;

②如果你想在本源文件中使用另一个源文件的变量,就需要在使用前用extern声明该变量,或者在头文件中用extern声明该变量
(4)const:
const:修饰变量,该变量成为一个只读变量(值是可以改变的)
const使用注意事项:修饰某个变量时,一定要初始化


4、什么时候用static?
无生命周期的用static,有生命周期的不用static。

(1)、全局静态变量:
在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。
  (2)、局部静态变量:
在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。

 

 

课堂作业:

Q1free时如何知道释放了多大空间?

想知道free如何工作那肯定需要知道malloc如何工作,正所谓怎么来的就怎么回去。
使用malloc分配内存时候根据参数指定的大小,分配一块内存,然后返回这块内存的起始位置给调用者,这就是调用者拿到的所谓的指针。
起始这个指针并不是真正的起始位置,真正的指针在malloc返回指针 p 的前面,内存分配器在 p 的前面用两个字节的空间来存放分配的内存大小信息。
看下图:


(原文链接:https://blog.csdn.net/bdss58/article/details/94005337)

Q2static在什么情况下使用?
(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;    

(2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;    

(3)限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;    

(4)在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;    

(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

Q3为什么要使用typedef给类型重命名?

作用:给已知数据类型重命名。
一是表明该类型的特殊作用,

二是将来有可能要改变这种类型(比如提高精度)

三是简化代码,便于批量修改具体类型。
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值