1.名字的作用域

  作用域是从空间的角度来分析的,c++的作用域以花括号分隔,定于于所有{ }以外的名字具有全局作用域,定义于{ }以内的名字具有块作用域

2.变量的生命周期

  生命周期是从变量存在的时间角度来分析的,生命周期可以分为静态存储期和动态存储期,这是由变量的静态存储方式和动态存储方式决定的

3.静态存储方式

  静态存储方式通常是指在变量在定义时就分配固定内存并一直保持不变, 直至整个程序结束,变量的内存在程序编译阶段就已经分配好

4.动态存储方式

  动态存储是指在程序执行过程中,使用变量时才分配内存, 使用完毕时立即释放

5.变量的分类

  c++的变量可分为静态局部变量全局(外部)变量自动变量寄存器变量

5.1静态局部变量(静态存储方式)

1)在函数体内用static声明的变量

2)定义时没有初始值将默认初始化为0

3)静态局部变量虽然生存周期为整个程序,但是其作用域仅限于定义它的函数内,也就是说在其他函数中不能使用它

4)静态局部变量初始化的时机:c语言:编译阶段分配好内存之后,就会进行初始化;c++:static局部变量在执行相关代码时才会进行初始化

5.2全局(外部)变量(静态存储方式)

1)在函数外部声明的变量称为全局变量,分为静态外部变量、非静态外部变量

2)静态全局变量:在函数体外关键字static声明的变量,只允许被本源文件(.cpp)中的函数使用(static的隐藏作用)

3)非静态全局变量:在函数体外没有用关键字static声明的变量,允许被其它源文件中的函数使用,当其他源文件中的函数使用非静态外部变量时,需要在使用用前用关键字extern进行说明

5.3自动变量(动态存储方式)

1)自动变量意为有自动的生命周期

2)在函数体内或者在复合语句内,用关键字auto声明的变量,关键字auto可以省略,我们常说的局部变量就是自动变量

3)定义时不初始化,其值是不确定的

5.4寄存器变量(动态存储方式)

1)一般情况下,变量的值都是存储在内存中的,为提高执行效率,c/c++允许将局部变量存放到寄存器中,这种变量就称为寄存器变量

2)用关键字register声明

6.辨析静态变量、全局(外部)变量、静态局部变量

1)静态变量包含静态全局变量和静态局部变量

2)全局变量包含静态全局变量、非静态全局变量

c++变量的存储方式的更多相关文章

  1. C语言学习笔记:12_变量的存储方式和生存期

    /* * 12_变量的存储方式和生存期.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include ...

  2. C语言变量、函数的作用域及变量的存储方式

    一.变量的作用域和存储方式 在C语言中每个变量都有两种基本属性:数据类型.数据的存储类别. 数据类型很多人都已熟知,例如:字符型(char).整型(int).浮点型(float)等等.存储类别是指数据 ...

  3. java笔记之变量的存储方式

    1.java变量存储域 java变量的存储区域主要放在以下几个地方: (1)寄存器:可以说是最快的存储区,在C/C++中可以声明寄存器变量,但是在java中不能声明寄存器变量,只是编译器在编译时确定. ...

  4. C语言中变量的存储方式

    变量可以分为全局变量.静态全局变量.局部变量和静态局部变量变量的声明有两种情况:1)一种是需要建立存储空间的(定义性声明).例如int a 在生命的时候就已经建立了存储空间.2)另一种是不需要建立存储 ...

  5. js变量按照存储方式区分,有哪些类型,并表述其特点

    // 值类型 拷贝形式 不像引用类型是指针指向,共用空间 值类型有 undefined string number Boolean var a = 100; var b = a; var a = 20 ...

  6. C语言的变量存储方式和生存期

    2020.2.28日,封城一个多月了,紧邻毕业期,我在家抽空学习一下C. 看到了变量的存储方式和生存期这一章节,下面就是我整理的内容 下面是用于理解静态局部变量这个概念所写的代码,主要是需要分析一下函 ...

  7. iOS开发系列--C语言之存储方式和作用域

    概述 基本上每种语言都要讨论这个话题,C语言也不例外,因为只有你完全了解每个变量或函数存储方式.作用范围和销毁时间才可能正确的使用这门语言.今天将着重介绍C语言中变量作用范围.存储方式.生命周期.作用 ...

  8. (C/C++学习笔记) 九. 变量的存储类型

    九. 变量的存储类型 ● 变量的存储类型(见附页) ● 注释 ①对于自动变量,它属于动态存储方式. 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式.由此看来,一个 ...

  9. .Net - 线程本地变量(存储)的使用

    关于C#多线程的文章,大部分都在讨论线程的开始与停止或者是多线程同步问题.多线程同步就是在不同线程中访问同一个变量或共享资源,众所周知在不使用线程同步的机制下,由于竞争的存在会使某些线程产生脏读或者是 ...

随机推荐

  1. SuRF: Practical Range Query Filtering with Fast Succinct Tries 阅读笔记

    SuRF(Succinct Range Filter)是一种快速而紧凑的过滤器,同时支持点查询和范围查询(包括开区间查询.闭区间查询.范围计数),可以在RocksDB中用SuRF来替换Bloom过滤器 ...

  2. 左手是“Python”的身体,右手是“R”的灵魂,你爱哪个?

    来源商业新知网,原标题:你爱 “Python”的身体,还是“R”的灵魂? 数据科学界有三大宝: Python.SAS和R,不过像SAS这种高端物种,不是我们这些平民能供养得起的啊. 根据 IEEE S ...

  3. 项目(一)ftp搭建

    FTP服务 FTP两种模式: 主动模式服务器向客户端敲门,然后客户端开门 被动模式客户端向服务器敲门,然后服务器开门 传输模式:可以是文本模式,也可以是二进制模式,二进制模式更适合传输图片等非文本字符 ...

  4. pyparsing自定义解析规则

    1.Word(token) 用于匹配由允许的字符集组成的单词,常见的错误是使用特定字符串Word("expr")匹配"expr" - L {alphas}  字 ...

  5. 【GitHub】的基本使用

    GitHub是一个常用的版本管理工具,之前安装了window版的git但是一直没使用过,今天尝试一下,去百度了一下使用方法: 引用https://www.cnblogs.com/paulwhw/p/9 ...

  6. 查询sqlserver数据库表的记录数

    SELECT a.name, b.rows FROM sysobjects AS a INNER JOINsysindexes AS b ON a.id = b.idWHERE (a.type = ' ...

  7. java、asp.net 通用分页码函数

    <script type="text/javascript"> $(document).ready(function(){ ajaxGetPaging(1); }); ...

  8. session的简单应用

    session的作用:服务器端保存信息. 用户登陆后,服务器端保存了 自定义的key:value 如下: if username == 'xxx' and password == 'xxxx': re ...

  9. Opencv-Python学习笔记(二)

    2. 使用OpenCV3处理图像 2.1 不同色彩空间的转换 OpenCV中有数百种关于在不同色彩空间之间转换的方法. 三种常用色彩空间:灰度.BGR.HSV(Hue色调,Saturation饱和度, ...

  10. Hillstone设备管理-恢复出厂设置

    1.CLI命令行操作 unset all: 根据提示选择是否保存当前配置y/n: 选择是否重启y/n: 系统重启后即恢复到出厂设置. 2.webUI操作 “系统”—“配置”,点击“清除”按钮,系统会提 ...