变量的存储类型 auto register extern static

2023-11-19

说明

在C语言中,变量和函数都有数据类型存储类型两个属性。

数据类型规定了取值范围和运算。

存储类型规定了占用内存的方式。

变量的存储类型可分为静态存储动态存储

静态存储

生命周期为程序的运行时间。

动态存储

动态分配内存,用完就放。

内存的区域划分

操作系统等 系统区
程序区 用户区
静态存储区
动态存储区

存储类型

auto

register

extern

static

下面开始介绍

自动变量(auto)

属于动态存储类型。

属于局部变量,只能在函数内和复合语句中定义。

auto int a;

auto可以省略,因为系统默认是自动变量。

外部变量(extern)

属于静态存储类型。

属于全局变量。

extern int a;

用于说明同一个源程序不同源文件中的变量。

静态变量(static)

属于静态存储类型。

用于改变变量的存储类型。

static int a;

注意:静态局部变量生存期为整个源程序,但作用域为定义它的函数和复合语句。

           静态全局变量生存期不变,但作用域为定义它的源文件。

从中我们可以看出:把局部变量改为静态局部变量是改变了它的存储方式,即改变了它的生存期。

                                把全局变量改为静态局部变量是改变了它的作用域,限制了它的使用范围。

寄存器变量(register)

属于动态存储类型。

变量一般放在存储器内,我们知道CPU是需要从存储器中访问数据的,如果对一个变量需要频繁访问,就会耗费时间,因此C语言提供了寄存器变量,将这种变量直接放在CPU寄存器中,需要时直接读写。

register i;
for(i=0;i<10000;i++)
printf("666");

说明

一是只有局部自动变量和形式参数可以定义为寄存器变量。

二是这个修饰符已经过时,目前大多数编译器可以做到程序优化,它自己会决定哪些变量是寄存器变量,而程序员指定的register型变量可能无效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

变量的存储类型 auto register extern static 的相关文章

随机推荐

  • 一招秒开GitHub,永久解决!

    步骤 目录 步骤 1 打开电脑 进入如下的路径 2 将hosts 复制到桌面 3 把hosts文件移动到桌面后etc文件夹下的hosts文件不存在 已经被移动到桌面了 4 在移到桌面的hosts文件里面进行修改 5 再把修改好的hosts文
  • mysql tomcat 自动重连_Java开发网 - tomcat连接池支持重新连接数据库吗?

    Posted by pigengler Posted on 2006 04 20 15 23 我做了一个测试 程序使用tomcat的连接池 factory org apache commons dbcp BasicDataSourceFac
  • 微信api ----统一下单

    应用场景 除被扫支付场景以外 商户系统先调用该接口在微信支付服务后台生成预支付交易单 返回正确的预支付交易回话标识后再按扫码 JSAPI APP等不同场景生成交易串调起支付 状态机 支付状态转变如下 接口链接 URL地址 https api
  • pandas中的data.corr()函数方法说明及使用

    数据相关性分析中 经常用到data corr 函数 data corr 表示了data中的两个变量之间的相关性 取值范围为 1 1 取值接近 1 表示反相关 类似反比例函数 取值接近1 表正相关 DataFrame corr 函数使用说明如
  • 国际版阿里云/腾讯云:阿里云流量包是用来做什么

    阿里云流量包是用来做什么 阿里云同享流量包是一种通用流量套餐 同享流量包具有多地域和多产品流量抵扣的优势 同享流量包不仅能够抵扣云服务器ECS发生的流量 还能够抵扣弹性公网IP和负载均衡SLB发生的流量 同享流量包掩盖产品规模广 同享流量包
  • Qt 设置:两个窗口位置重合

    目录 Qt 设置 两个窗口位置重合 QT向界面中嵌套新的界面 QT向界面中嵌套新的界面 https www cnblogs com bob jianfeng p 11609012 html 第一步 先进入ui编辑界面 加入一个水平或者垂直的
  • 数据预处理与特征工程—10.图像切割与特征提取

    文章目录 引言 一 图像切割 二 特征提取 1 各阶颜色矩的计算公式 三 python实现 水质图像数据 百度网盘链接提取码 1234 引言 本文以水质图像为例 进行图像切割与特征提取 一 图像切割 一般情况下 采集到的水样图片包含盛水容器
  • 深入研究C++多态(虚函数和虚继承)

    文章目录 多态的引入 虚函数表 几种常见继承关系中的类内存分布 单继承 多继承 菱形继承 总结 作者 狗子孙 链接 https www jianshu com p 02183498a2c2 来源 简书 简书著作权归作者所有 任何形式的转载都
  • 如何彻底删除JetBrains系列软件教程

    mac安装JetBrains系列软件后 如果JetBrains系列软件出了问题需要重新安装 有时候软件删除重装后 JetBrains系列软件仍然会打不开的问题 很是困扰 接下来为您带来了mac上如何彻底删除IntelliJ IDEA等软件的
  • Char.IsDigit与Char.IsNumber的区别

    需要判断Char是否为数字 查看了下MSDN 发现有三种方法 Char IsDigit aChar 指示指定字符串中位于指定位置处的字符是否属于十进制数字类别 Char IsNumber aChar 指示指定字符串中位于指定位置的字符是否属
  • redis cluster知识

    一 架构 Redis Cluster使用 Slot 的概念 作为一个KV系统 它把每个key的值hash成0 16383之间的一个数 这个hash值被用来确定对应的数据存储在哪个节点中 集群中的每个节点都存储了一份类似路由表的东西 描述每个
  • 你知道bdsm吗

    是的 我知道 BDSM BDSM 是一种性癖好 通常指一组相关的性癖好 包括 较强的角色扮演 较轻的或较重的身体触摸 以及在性活动中的安全词 BDSM 也可以包括授权和自我控制 以及建立信任和良好的沟通 BDSM 可能涉及各种形式的挑逗 包
  • 4. Spring Boot Security角色管理持久化实现

    1 概述 在第三章里大家学会了怎么初步使用Spring Boot 结合Spring Security来实现权限控制和角色管理 但是我们发现无论是使用那种方式角色管理和权限控制全部是在 xml中或则 配置类中写的 没有实现持久化 本次就为大家
  • Conversion to Dalvik format failed with error

    Conversion to Dalvik format failed with error 1解决方法 第一种情况包导入错误 点击工程 gt build path gt libraries gt 选中android1 x 或者android
  • 解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录

    1 将google 管理后台的 sha 1 证书值 记录下来 2 根据Google sha 1 证书值 获取 Facebook 的登录需要使用的散列值 使用以下工具 http tomeko net online tools hex to b
  • MySQL——idea连接MySQL

    选择MySQL 连接数据库 选择数据库 编写SQL语句
  • Anaconda 命令行常用指令

    Anaconda 命令行指令 Anaconda Prompt 命令行 一 基础指令 1 查看Anaconda安装版本 conda version 2 查看已经安装的环境 conda env list 方法1 conda info env 方
  • 网络基础知识

    网络编程 2 网络的体系结构 七层模型 四层模型 因为网络通信比较麻烦 所以网络采用分层思想 OSI开放系统互联网模型 七层模型 高层 应用层 表示层 会话层 低层 传输层 网络层 数据链路层 物理层 驱动 网卡 仅仅是一种理想状态 现实中
  • 文本情感分析竞赛(首次提交排名第6)

    之前花了半个小时做了个DataCastle上的基础竞赛题 然后提交结果后直接第六名 因此来分享一下 该文章之前记录在我的公众号上 原文链接 https mp weixin qq com s nIJ2begF2 5i WnT1PEM3w 数据
  • 变量的存储类型 auto register extern static

    说明 在C语言中 变量和函数都有数据类型和存储类型两个属性 数据类型规定了取值范围和运算 存储类型规定了占用内存的方式 变量的存储类型可分为静态存储和动态存储 静态存储 生命周期为程序的运行时间 动态存储 动态分配内存 用完就放 内存的区域