远程学习和教育的概念。在线教程和视频课程,研究和毕业,科学研讨会,数字网络学习,测试和文学

内存用于存储程序中的数据,由存储期、作用域和链接表征。存储期可以是静态的、自动的或动态分配的。如果是静态存储期,在程序开始执行时分配内存,并在程序运行时都存在。如果是自动存储期,在程序进入变量定义所在块时分配变量的内存,在程序离开块时释放内存。

如果是动态分配存储期,在调用malloc()(或相关函数)时分配内存,在调用free()函数时释放内存。作用域决定程序的哪些部分可以访问某数据。定义在所有函数之外的变量具有文件作用域,对位于该变量声明之后的所有函数可见。

定义在块或作为函数形参内的变量具有块作用域,只对该块以及它包含的嵌套块可见。链接描述定义在程序某翻译单元中的变量可被链接的程度。具有块作用域的变量是局部变量,无链接。具有文件作用域的变量可以是内部链接或外部链接。内部链接意味着只有其定义所在的文件才能使用该变量。外部链接意味着其他文件使用也可以使用该变量。下面是C的5种存储类别(不包括线程的概念)。

下面是C的5种存储类别(不包括线程的概念)。

自动:在块中不带存储类别说明符或带auto存储类别说明符声明的变量(或作为函数头中的形参)属于自动存储类别,具有自动存储期、块作用域、无链接。如果未初始化自动变量,它的值是未定义的。

寄存器——在块中带register存储类别说明符声明的变量(或作为函数头中的形参)属于寄存器存储类别,具有自动存储期、块作用域、无链接,且无法获取其地址。把一个变量声明为寄存器变量即请求编译器将其存储到访问速度最快的区域。如果未初始化寄存器变量,它的值是未定义的。

静态、无链接——在块中带static存储类别说明符声明的变量属于“静态、无链接”存储类别,具有静态存储期、块作用域、无链接。只在编译时被初始化一次。如果未显式初始化,它的字节都被设置为0。

静态、外部链接——在所有函数外部且没有使用static存储类别说明符声明的变量属于“静态、外部链接”存储类别,具有静态存储期、文件作用域、外部链接。只能在编译器被初始化一次。如果未显式初始化,它的字节都被设置为0。

静态、内部链接——在所有函数外部且使用了static存储类别说明符声明的变量属于“静态、内部链接”存储类别,具有静态存储期、文件作用域、内部链接。只能在编译器被初始化一次。如果未显式初始化,它的字节都被设置为0。

动态分配的内存由malloc()(或相关)函数分配,该函数返回一个指向指定字节数内存块的指针。这块内存被free()函数释放后便可重复使用,free()函数以该内存块的地址作为参数。

类型限定符const、volatile、restrict和_Atomic。const限定符限定数据在程序运行时不能改变。对指针使用const时,可限定指针本身不能改变或指针指向的数据不能改变,这取决于const在指针声明中的位置。volatile限定符表明,限定的数据除了被当前程序修改外还可以被其他进程修改。该限定符的目的是警告编译器不要进行假定的优化。restrict限定符也是为了方便编译器设置优化方案。restrict限定的指针是访问它所指向数据的唯一途径。

如不指定存储类型c语言,总结C语言的五种存储类型相关推荐

  1. redis的五种存储类型的具体用法

    一.String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-&g ...

  2. 【Redis】五种存储类型及其底层数据结构

    Redis(Remote Dictionary Service远程字典服务) 参考: 图解redis五种数据结构底层实现(动图哦) Redis(1)--5种基本数据结构 目录 1. Redis的五种存 ...

  3. JAVA中两个char类型相加_1、JAVA中的几种基本类型,各占用多少字节?

    1.Java是一种强类型语言.这就意味着必须为每一个变量声明一种类型.在Java中,-共有8种基本类型,其中有4种整型.2种浮点类型.1种用于表示Unicode编码的字符单元的字符类型char和1种用 ...

  4. Redis_17_Redis服务器中的数据库(五种基本类型底层存放)

    文章目录 一.前言 二.RedisObject对象 2.1 RedisObject对象 2.2 类型type 2.3 编码encoding 2.4 sds 三.字符串对象string 3.1 int编 ...

  5. 前端百题斩【024】——我从浏览器控制台看到了五种存储方式

    写该系列文章的初衷是"让每位前端工程师掌握高频知识点,为工作助力".这是前端百题斩的第24斩,希望朋友们关注公众号"执鸢者",用知识武装自己的头脑. 打开浏览器 ...

  6. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  7. 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型

    一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...

  8. 短视频开头如何才能吸引人?五种开头类型分享,帮你抓住观众眼球

    短视频开头如何才能吸引人?五种开头类型分享,帮你抓住观众眼球 对于一则短视频来说,开头就吸引人,才能让观众有兴趣看下去,获得更多的播放量.那么,短视频开头究竟要怎么做才能吸引人呢?今天我们就来分享五种 ...

  9. 安防视频流媒体可视化服务EasyNVR存储模式之NVR、IP-SAN和CVR三种存储模式对比

    近几年,安防视频监控的势头不断上涨,对视频的技术要求也越来越高.组建一套安防视频监控,我们需要考虑四个部分,分别是前端系统,传输系统,存储系统以及显示系统,其中存储系统是监控项目中非常重要的一部分.常 ...

  10. @value 静态变量_C/C++语言中的变量的4种存储类型

    所有的数据都有两种类型 (1)数据类型: : 如 int,float 等. (2)存储类型: : 总共有四种存储类型的变量,分别为自动变量(auto).静态变量(static).外部变量(extern ...

最新文章

  1. 将 iPhone 定位设置在法国,手机速度就能迅速提升?
  2. [Hibernate]在VS2010中应用NHibernate 3.2与MySQL
  3. Python学习之字典
  4. Arduino初初教程10——温湿度传感器
  5. android gradle proguard,Android Gradle插件2.2.0 ProGuard开始保留内部类
  6. 基本图形的光栅化算法
  7. 群晖NAS删除文件不释放空间的原因和方法
  8. C语言和C++的区别到底是什么?
  9. netstat 用法
  10. 手术导航系统原理简介、主要工作及应用
  11. 5款App帮你创建时间轴
  12. 通达OA系统管理员操作手册
  13. 《深度学习:21 天实战 Caffe》资源已上传至码云、github
  14. 卓越风险管理 护航普惠金融
  15. linux启动菜单ubuntu,在Ubuntu上用BURG来美化开机选择菜单
  16. 万维钢:但是人终将老去
  17. linux系统写批处理文件
  18. Vue 的身份证 手机号码 电话号码 邮箱等校验
  19. Linux对大于2T的磁盘分区方法及创建逻辑卷LVM
  20. 利用区块链技术解决传统物流贸易金融诸多痛点

热门文章

  1. c语言内存四区,详解C语言中的内存四区模型及结构体对内存的使用
  2. 数据库配置文件,db.properties、jdbc.properties
  3. java clear new_Java基础之Map的clear和new的区别
  4. 一段看不懂的乱码字符_字符乱码的解读
  5. 从认知语言学的角度来看计算机没有,从认知语言学的角度来看「ところ」
  6. android 2.3 源码编译,(转)android源码2.3编译——致命错误: bits/predefs.h
  7. kill mysql 进程_如何快速处理mysql连接数占满的问题?
  8. 单片机r6/r7c语言怎么用,第5章MCU混合编程与C语言和汇编语言
  9. 理解 __doPostBack--1
  10. 51Nod-1486 大大走格子