完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 cugwyman 于 2017-2-26 15:58 编辑
背景距离上次写读书笔记的日子已有半个月了。这段时间一直在做摄像头直立平衡车,也把《C Primer Plus》的中级部分扫了一遍。现在做赛道算法识别遇到瓶颈了,就想把读书笔记补回来。原计划是写指针和数组2的。现在发现还不如直接开新篇,反正之前没写的变长数组之类的也会提及。所以就有这篇存储类、链接和内存管理。虽说这里部分的知识都有在平时码代码时用到,认识得深一点,但是还是有很多过目就忘的,遂烂笔头记之。 存储类C为变量提供了5种不同的存储模型,或称存储类。还有基于指针的第6种存储模型。可按照一个变量的存储时期(storage duration)、作用域(scope)及链接(linkage)来描述它。 作用域作用域描述了程序中可以访问一个标识符的一个或多个区域。可以是代码块作用域、函数原型作用域或者文件作用域。
链接一个C变量具有下列链接之一:外部链接(external linkage),内部链接(internal linkage)或空链接(no linkage)。
存储时期一个C变量有以下两种存储时期之一:静态存储时期(static storage duration)和自动存储时期(automatic storage duration)。
存储类和函数函数也有存储类,可以时外部的、静态的或内联的。 若无static,默认是extern。 随机数函数与静态变量
另外还有利用计算机掷出非现实的任意个任意面骰子的程序。 分配内存:malloc()和free()函数malloc() 接受一个参数:所需内存字节数。然后malloc()找到可用内存中一个大小适合的块。内存是匿名的,即malloc()分配了内存,但没有为它指定名字。然而,它可以返回那块内存第一个字节的地址。因此,可以把那个地址赋值给一个指针变量,并使用该指针来访问那块内存。malloc()可指向char或void(通用指针)的指针,可返回数组指针、结构指针等等。若找不到所需的空间,它将返回空指针。
这段代码请求30个double类型值的空间,并把ptd指向该空间所在位置。注意ptd是作为指向一个double类型值的指针声明的。数组的名字是它第一个元素的地址。可用ptd[n]来访问第n个元素。 现在,创建一个数组有三种方法:
存储类与动态内存分配理想的程序将其可用内存分为三个独立的部分:一个是具有外部、内部及空链接的静态变量的;一个是自动变量的,另一个是动态内存分配的。 - 声明不同存储类,变量使用内存时间不同,将这一部分内存处理为一个堆栈。这样的新变量在内存中创建时按顺序加入,消亡时按相反顺序移除。 - 动态分配的内存在调用malloc等时产生,调用free时释放。这样的内存可能是碎片状的。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
3038 浏览 3 评论
1514 浏览 3 评论
4641 浏览 1 评论
2011 浏览 1 评论
3249 浏览 2 评论
508浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 14:57 , Processed in 1.346660 second(s), Total 54, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号