C语言动态变量概念,轻松学C语言之动态内存管理以及变量的

《轻松学C语言之动态内存管理以及变量的》由会员分享,可在线阅读,更多相关《轻松学C语言之动态内存管理以及变量的(32页珍藏版)》请在人人文库网上搜索。

1、第13章 动态内存管理以及变量的存储类别,13.1 动态内存管理的来源,C语言中,只运行使用系统分配的内存,如果系统没有为变量分配内存,那么会出现什么情况呢?如图13.1所示,13.1 动态内存管理的来源,13.1 动态内存管理的来源,13.1 动态内存管理的来源,13.2 动态内存管理,当我们要进行动态内存分配时,我们首先要进行内存分配。当程序对分配的内存空间执行完毕后,我们要将分配的空间释放掉,从而提高了内存空间的利用率。但是,当我们分配的内存不够使用时,我们需要重新分配存储空间。本节主要讲解怎样解决这一系列的问题,13.2.1 动态存储区域分配空间,我们使用动态存储区域分配存储空间可以使。

2、用以下2个函数实现:malloc()函数、calloc()函数,1.malloc()函数,实现动态存储区域分配空间的函数malloc(),其调用形式以及参数说明如图13.4所示,2.calloc()函数,calloc()函数实现在内存的动态存储区域中分配n个长度为size的连续存储空间。它的调用形式以及说明如图13.6所示,2.calloc()函数,13.2.2 释放动态分配的存储空间,当动态分配的存储空间已经不再被使用时,我们应该释放掉它,把它交还给系统,使系统可以重新对其分配。C语言中,对于释放动态分配的存储空间我们使用free()函数,其调用形式以及说明如图13.9所示,13.2.2 释。

3、放动态分配的存储空间,13.2.3 重新分配内存空间,如果我们对动态分配的存储空间不合适,可以使用realloc()函数重新分配动态存储空间,其调用形式以及说明如图13.12所示,13.2.3 重新分配内存空间,13.2.4 sizeof判断数据类型长度符,前面所讲的是关于内存动态分配空间,而在在程序设计中我们是直接指定了分配内存大小空间。但是这样不利于程序的可移植性,因为在不同的计算机系统中,统一数据类型所占用的内存空间不一致,为了解决这个问题,C语言提供了一个判断数据类型长度的操作符sizeof。sizeof对于数据类型的操作如图13.14所示,13.3 变量的存储类别,C语言中,每一个变。

4、量和函数都有两个属性:数据类型和存储类别。数据类型大家已经熟悉,存储类别是数据在内存中存储的方式。存储方式分为两大类:动态存储类与静态存储类。具体包含4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。根据变量的存储类别,可以知道变量的作用域和生存期,13.3.1 静态存储方式与动态存储方式,内存中的供用户使用的存储空间可以分为三部分,如图13.16所示,13.3.1 静态存储方式与动态存储方式,13.3.1 静态存储方式与动态存储方式,13.3.2 static声明静态局部变量,静态局部变量的含义如图13.18所示,13.3.2 stati。

5、c声明静态局部变量,13.3.3 自动变量,函数中的局部变量如果声明为非static存储类别的,都是动态的分配存储空间的,这类变量也就是本节所讲的自动变量。对于自动变量的声明,我们可以使用auto关键字声明,也可以省略关键字。如果省略关键字,那么隐含意思也是自动变量。如图13.20所示,13.3.3 自动变量,13.3.3 自动变量,13.3.4 register寄存器变量,一般情况下,变量是存储在内存中的,存数与取数主要是和运算器打交道的,如图13.22所示,13.3.4 register寄存器变量,13.3.4 register寄存器变量,13.3.5 extern声明外部变量,大家已经知。

6、道外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始到程序执行结束。那么,如果想在外部变量定义之前使用该外部变量该怎么办呢?C语言中使用extern关键字声明外部变量来解决这个问题,从而扩展了外部变量的作用域,1.在一个文件内声明外部变量,如果我们想在外部变量定义之前的函数中使用该外部变量,则应该使用关键字extern对变量作“外部变量声明”,表示该变量是一个已经定义的外部变量,extern声明外部变量的形式如图13.25所示,2.在多文件的程序中声明外部变量,如果程序有多个源文件组成,那么在一个文件中想引用另一个文件中定义的外部变量,我们该怎么处理呢?C语言中,使用如下做法。

7、解决:在任意一个文件中定义该外部变量,在另一个文件中用extern作“外部变量声明”。下面来举例说明这种情况对外部变量的引用,13.3.6 static的使用,在一个由多个文件组成的源程序中,如果其它文件不需要引用本文件的外部变量,可以对文件中的这些变量都加上static,使这些变量称为静态外部变量,以免被其它文件误用。如图13.28所示,13.4 小结,本章主要讲解了动态内存管理以及变量的存储类别,重点是动态内存管理中的存储区域空间的分配以及释放,sizeof操作符在内存分配空间中的使用,静态存储方式与动态存储方式的区别,静态局部变量、自动变量、寄存器变量、extern声明外部变量与static使用。希望大家在编程的过程中熟练掌握。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值