栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C程序访问内存的方法、存储类型(存储类别)、存储期、对象、左值 详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C程序访问内存的方法、存储类型(存储类别)、存储期、对象、左值 详解

C程序访问内存的方法、 存储类型(存储类别)、存储期、对象、左值 1. 什么是存储类型?

即C语言程序在内存中存储数据的存储类别,C语言有多种不同的存储类别。

2. 什么是对象?

从硬件角度上看,被存储的每个值都占用一定的物理内存,C语言把这样的一块内存称为对象。

3. 程序访问对象(内存)的方法:

通过声明变量实现,创建标识符,标识符可以指定特定对象的内容。标识符是一个名称,在这种情况下,标识符可以用来指定(designate)特定对象的内容。
举例:

int  data_object;

声明了一个名称叫 data_object 的标识符,这个标识符是一个变量。可以指定特定(分配的内存位置)对象的内容。
!!标识符不是指定对象的唯一途径,还可以使用指针。

*pt 不是标识符,但是可以指定对象。
int  data_object = 10;
int  *pt = & data_object;
int  array[520];

pt 是一个标识符,它指定了一个存储地址的对象(占用物理内存)。
但是,表达式*pt不是标识符,但是它可以指向data_object的对象。
数组的每一个元素也是对象。

4. 什么是表达式?

由运算符和运算对象组成,运算符可以为空,每个表达式都有一个值

5. 什么是左值?

那些可以指定对象的表达式被称为左值。
说明:变量既是标识符也是左值。
举例:

data_object 既是标识符也是左值。
*pt 不是标识符,是表达式也是左值。
pt 是标识符,不是表达式也不是左值。

array + 10* data_object 是表达式,不是左值(不指定内存位置里存放的内容),不是标识符。
*(array + 10 data_object)是表达式,是左值,不是标识符。

什么是可修改的左值?

可以使用左值修改对象中(内存中)的值,就是这个变量名在 “=”左边,可以通过右侧的表达式给左边的变量赋值。

6. 什么是存储期

作用域和链接描述了标识符的可见性(程序的哪些部分可以使用该标识符)。
存储期描述了(通过)标识符访问的对象的生存期,就是指对象在内存中保留了多长时间,可以认为存储期就是生存期。

C的对象有4种存储期:
静态存储期、线程存储期、自动存储期、动态分配存储期
(1)静态存储期:对象在程序执行期间一直存在
举例:文件作用域变量,
(2)线程存储期:从声明开始到线程结束一直存在
举例:并发程序设计中具有线程存储期的对象
(3)自动存储期:进入代码块时分配内存,代码块结束时释放内存。
举例:局部变量
(4)动态分配存储期:
调用malloc时分配内存,调用free函数时释放内存

7.什么是存储类别

存储类别: 变量的存储类型是指存储变量值的内存类型!
变量的存储类型决定其何时创建,何时销毁,值保持多久。内存中存储变量的地方包括:普通内存、运行时的堆栈、硬件寄存器。

①自动 存储于堆栈中(代码块内部声明的变量)
②静态 存储于静态存储区 (被static修饰过的变量),函数形参不能声明为静态。

包括:

(1)块作用域的静态变量,
(2)内部链接的静态变量(被static修饰的文件作用域变量(全局变量))
(3)外部链接的静态变量,一般叫做外部变量,不然读起来容易有歧义,且容易混淆(被extern(可缺省)修饰的文件作用域变量(全局变量))。

③寄存器 存储于机器的硬件寄存器 访问效率更高,容量有限,地址不可被获取。

存储类别说明符

C语言中,存储类别说明符包括:
auto、static、extern、register、_Thread_local和typedef

(1) auto 说明符修饰变量表明变量是自动存储期,只能用于块作用域变量声明中,一般缺省。
(2) static 说明符修饰变量表明变量是静态存储期。
(3)extern 说明符表明声明的变量定义在别处。
(4)register 说明符只能用于修饰块作用域变量,将变量放在寄存器存储,可以以更快的速度访问该变量,且地址不能被获取。
(5)_Thread_local 以该关键字创建的对象具有线程存储期,即在线程中声明的对象,在该线程运行期间一直存在。该对象属于线程私有!
(6)typedef 与存储无关,主要是工程使用原因将其归为存储类别说明符

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991716.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号