C++变量的存储类型】的更多相关文章

九. 变量的存储类型 ● 变量的存储类型(见附页) ● 注释 ①对于自动变量,它属于动态存储方式. 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式.由此看来,一个变量可由static进行再说明,并改变其原有的存储方式. ②"static"的含义不是指存储方式,而是指变量的作用域仅局限于本文件,一个函数内部的变量, 如果有关键字static修饰, 那么在函数调用结束时, 该静态变量的值不会消失. 另外,函数前加static使得函数成为静态函数,指函数…
在C语言中,对变量的存储类型说明有以下四种: auto 自动变量register   寄存器变量extern 外部变量static   静态变量 自动变量和寄存器变量属于动态存储方式,外部变量和静态变量属于静态存储方式. 在介绍了变量的存储类型之后,可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型. 因此变量说明的完整形式应为:存储类型说明符数据类型说明符变量名,变量名…:例如: static int a,b;      说明a,b为静态类型变量 auto char c1,c2;…
目录 全局变量 局部变量 存储类型 全局变量和局部变量 变量的作用域 作用域:某些事物起作用或有效的区域. 变量的使用范围称为变量的作用域. 变量的作用域决定了变量的可操作性和有效性. C语言变量的作用域 局部变量 在函数内部声明的变量 形式参数是局部变量 作用域仅限于定义的函数内,离开函数后无法再使用 全局变量 在函数的外部定义的变量 不属于某一个函数,属于源程序 作用域是由变量定义的位置至整个程序文件结束 局部变量和全局变量的区别 注:for循环参数列表中定义的变量作用域为函数范围.例如:…
C++变量和函数包括两个属性:数据类型和数据的存储类型.存储类型是指数据在内存中存储的方式.变量的存储类型分为四种:自动类型(auto),寄存器类型(register).静态类型(static)外部类型(extern)其中,自动类型.寄存器类型的变量属于动态变量;静态类型.外部类型的变量属于静态变量. 1.自动类型(auto) 用自动类型关键词auto说明的变量称为自动变量.auto只能修饰局部变量,不能修饰全局变量. (1)定义格式:auto  类型 变量名;(2)特性.自动变量是动态局部变量…
总结 1).在c语言中每一个变量和函数有两个属性:数据类型和数据的存储类别. 2). 对数据型(如整型.字符型等).存储类别指的是数据在内存中存储的方式. 存储方式分为两大类: 静态存储类和动态存储类 具体包括四种:{自动的(auto), 静态的(static), 寄存器(register), 外部的(extern)}. 根据变量的存储类别, 可以知道变量的作用域和生存期. 一个程序在编译运行的时候, 普通变量是存放在栈里面的 而static会是的变量存放在data里 整个内存主要分为四大区:…
在C语言中,对变量的存储类型说明有以下四种:   auto          自动变量 (动态存储) register     寄存器变量(动态存储) extern       外部变量(静态存储) static         静态变量(静态存储) 所谓存储类型是指变量占用内存空间的方式,也称为存储方式. 这4种类型 不允许重复定义 如: extern static int a=200:是错误的:只能指定一中存储类型:如:static int a =200:或者是 extern int a;…
变量的破碎类型是指存储变量值的内存类型.变量的存储类型决定变量何时创建.何时销毁以及它的值将保持多久. 有三个地方可以用于存在变量:普通内存.运行时堆栈.硬件寄存器. 变量的缺省存储类型取决于它的声明位置.凡是在任何代码块之外声明的变量问题存储于静态内存中,也就是不属于堆栈的内存,这类变量称为静态变量.对于这类变量,你无法为它们指定其他存储类型.静态变量在程序运行之前创建,在程序的整个执行期间始终存在.它始终保持原先的值,除非给它赋一个不同的值或者程序结束. 在代码块内部声明的变量的缺省存储类型…
C语言中的存储类型主要有四种:auto.static.extern.register ★auto存储类型 默认的存储类型.在C语言中,假设忽略了变量的存储类型,那么编译器就会自己主动默认为auto型 ★register存储类型 寄存器变量.寄存器位于CPU,它的特点是:容量小.速度快.它一般用来暂存程序中使用频繁的变量.或者一些中间变量等,能提高程序的运行速度. 此类别的变量会优先分配寄存器. ★static存储类型 static定义的变量都是静态变量,用于限制作用域,不管是全局变量还是局部变量…
Technorati 标签: C,标识符,作用域,命名空间,链接属性,生命周期,存储类型,scope,name space,linkage,storage durations,lifetime 无论学习哪一种语言,都免不了要讨论这些问题.而且这些问题,深究起来有时也让我们很迷惑. 标识符的定义无需多讲,只需注意不仅仅是指变量,还有函数,标签等. 1. 标识符的作用域 作用域是指允许对标识符进行访问的位置范围.按照C99(章节6.2.1),C语言的作用域共有 4 种类型:文件作用域.代码块作用域.…
作用域 当变量在程序的某个部分被声明的时候,他只有在程序的一定渔区才能被访问,编译器可以确认4种不同类型的作用域:文件作用域,函数作用域,代码块作用域和原型作用域 1.代码块作用域:位于一对花括号之间的所有语句称为一个代码块.任何在代码块的开始位置声明的标识符都具有代码块作用域,表示他可以被这个代码块中的所有语句访问.(例子中:f,g函数,i) 2.文件作用域:任何在所有代码块之外声明的标识符都具有文件作用域,他表示这些标识符从他们的声明之处直到他所在的源文件结尾处都是可以访问的.(例子中:a,…
1.变量的声明 声明变量的基本形式: 说明符号(一个或者多个) 声明表达式列表 说明符 (specifier) 包含一些关键字,用于描述被声明的标识符的基本类型,它也可用户改变标识符的缺省存储类型和作用域. 如: int i; char j, k, l; 修改变量的长度或者是否为有符号数的关键字: //short long signed unsigned unsigned short int a; unsigned short a; 相等的整型说明 有符号 无符号 short signed sh…
看c专家编程,有说存储类型一直不太清楚.看到一篇文章讲解c的存储类型,讲解了c语言中的各种变量的存储类型,而且是从进程.内存的角度讲解的,以前从没有这样理解过,觉得挺有用的,在这里转载过来. 首先要来理解一下可执行文件加载进内存后形成的进程在内存中的结构,如下图: 代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的. 数据区:存放已初始化的全局变量.静态变量(全局和局部).常量数据. BBS区:存放的是未初始化的全局变量和静态变量. 栈区:由编译器自动分配释放,存放函数的参数值.返回…
C/C++中作用域详解 作用域 编译器可以确认的4种作用域-代码块作用域.文件作用域.函数作用域和原型作用域,一般来说,标识符(包括变量名和函数名)声明的位置决定它的作用域. (1)代码块作用域 一对花括号成为一个代码块,任何在代码块开始位置声明的标识符(不包括代码块的函数名)具有代码块作用域. 代码块处于嵌套状态时,声明于内层代码块的标识符的作用域到达该代码块的尾部(包括花括号)便终止.注意:如果内层代码块的某个变量与外层相同,内层会将外层的变量隐藏,即内层代码块无法访问到外层标识符. (2)…
在C中判断变量存储类型(字符常量/数组/动态变量) 在chinaunix论坛上有人问到关于变量存府类型的问题,我觉得可以写个测试代码加深大家对内存使用和布局的理解.下面我把原问题及处理办法贴出来,限供大家参考. 原问题: static void testB (char *src) { /* 判断传入的src 是属于 @1/2/3 ??? */ do_somthing (); } static void testA (char *src) { char *a = "hello world"…
以严谨的语法表示作为前提 首先变量被定义,然后给变量赋予一定的值,变量真正的作用就是存储值 变量的定义和赋值 变量的定义: var a 使用关键字var+变量名表示定义一个变量 a 变量的赋值: var a = 123; 表示定义一个变量a,然后把123赋值给变量a,以后123的时候直接使用a来表示 变量的的类型识别 变量只是一个识别符号,重要的是变量代表的数据类型.JavaScript中的数据类型主要包含两大类(简单数据类型和复合数据类型): 简单数据类型:简单数据类型又叫基本数据类型,有nu…
http://blog.csdn.net/zhandoushi1982/article/details/5425835 一)auto:auto称为自动变量(局部变量).局部变量是指在函数内部说明的变量(有时也称为自动变量).所有的非全程变量都被认为是局部变量,所以auto实际上从来不用.局部变量在函数调用时自动产生,但不会自动初始化,随函数调用的结束,这个变量也就自动消失了.下次调用此函数时再自动产生,还要再赋值,退出时又自动消失.二)static:static称为静态变量.根据变量的类型可以分…
auto 动态存储类型变量(函数内部变量存储默认为 auto型) auto只用于函数内部定义,单片机在执行这个函数时为它分配内存地址,当函数执行完毕返回后,auto变量会被销毁,再次进入这个函数时,它的初值是不确定的,必须对她重新进行初始化.auto变量是局部变量,只允许在定义它的函数内部使用,在函数外的其他地方都不能使用.由于auto变量在定义它的函数以外的任何地方都是不可见的,所以允许在这个函数以外的其他地方或是其他函数内部定义同名的变量,它们之间是不会发生冲突的,因为他们都有自己的区域性,…
写在开头 对于很多C/C++的初学者来说,很容易理不清变量的作用域和存储类型这一块的一些概念,也容易将其中的一些概念搞混淆.作为一个C/C++的初学者,笔者希望在这里能够尝试着去理一理这些较为繁杂的概念,主要当作自己备忘之用.当然,由于笔者水平有限,经验不足,在这里也只能罗列一些常用概念和使用方法,且可能会有些许不专业之处,望君理解并指正. 一定要把变量的作用域和存储类型分开来看 很多人很容易把变量的作用于和存储类型搞混,但其实只要我们从它们定义出发来看,这个问题是很容易解决的.作用域是一个变量…
变量的储存类型决定标量何时创建,何时销毁以及他的值保持多久.有三个地方可以储存变量: 普通内存static 运行时堆栈auto 硬件寄存器register 变量的缺省储存类型取决于它的声明位置: 静态变量static: 凡是在代码块之外声明的变量总是存储于静态内存中,不属于堆栈的内存,无法为他们指定其他的储存类型,静态变量在程序运行之前创建,在整个程序执行期间始终存在,他始终保持原先的值,除非给他赋一个不同的值或者程序结束 自动变量auto:  在代码块内部声明的变量,储存于堆栈中,称为自动变量…
在进入正题前我们必须了解一些概念: 标识符:标识符不仅仅代表着变量的名字,main()函数的main也是一个标识符,这点很重要. 存储类型:即变量的存储位置及其生存周期:静态区:分为两块 .date 已显式初始化的全局变量了静态变量 .bss 存放未初始化的全局或者静态变量 注意:静态变量的初值是在编译时就进行初始化了:意思就是用static修饰的变量赋过数值的话就保存为他的初值,如果没有初始化的话就赋值为零,且整个程序只初始化一次:即不管static int i = 1:或者这 static…
; extern int b; static int c; int d( int e ) { ; register int b; ; extern int a; ... { int e; int a; extern int h; ... } ... { int x; int e; ... } ... } static int i() { ... } ... 属于文件作用域的声明在缺省情况下为external链接属性,所以第1行的a的链接属性为external. 如果b的定义在其他地方,第2行的e…
变量和基本类型之第一篇:基本内置类型和变量 一. (1) C++定义了一套包括算数类型和空类型,这些类型有:布尔类型bool,字符类型char,宽字符类型wchar_t,Unicode字符char16_t,Unicode字符char32_t,短整型short(int), 整形int,长整形long(int),长整形long long(int),单精度浮点型float,双精度浮点型double,扩展精度浮点数long double. 其中,wchar_t.char16_t.char32_t用于扩展…
总结一下C++中变量的存储类别以及变量的作用域. (1)标示符的存储类别决定了标示符在内存中存在的时间(我们可以理解标示符就是确定一个变量的符号,也就是我们所说的变量名) 二:存储类别 (1)静态存储类别:静态存数类别变量(我们简称静态变量),从程序的开始处就存在,其生命期伴随整个程序. (2)自动存储类别:当变量时自动存储类别时,变量在进入到定义它们的程序快时定义它,在离开它们所在的程序块(作用域)时销毁它,因此成为自动变量.其中关键字auto和register用来声明自动类型的变量, 三:自…
1.java变量存储域 java变量的存储区域主要放在以下几个地方: (1)寄存器:可以说是最快的存储区,在C/C++中可以声明寄存器变量,但是在java中不能声明寄存器变量,只是编译器在编译时确定. (2)栈:存放关于基本类型数据和对象的引用,但是对象本身并不在栈里,(通过new出来的)对象放在堆里或者常量池中(字符串的常量对象就放在常量池中). (3)堆:用于存放new出来的对象. (4)常量池:存放字符串常量和基本类型数据的常量(通过 public static final修饰). (5)…
转自const变量的存储区及修改权限 [cpp] view plaincopy const int a = 1; int *p = const_cast<int*>(&a); *p = 2; cout << "value a="<< a << endl; cout << "value *p=" <<*p << endl; cout << "address…
c语言中的存储类型有`auto`, `extern`, `register`,`static` 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区.BBS区.栈区.堆区. 数据区  存放已初始化的全局变量.静态变量(全局和局部).常量数据. BBS区  存放的是未初始化的全局变量和静态变量. 栈区  由编译器自动分配释放,存放函数的参数值.返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须程序员手动管理. 堆区  堆是由…
__block存储类型 你可以指定引入一个变量为可更改的,即读-写的,通过应用__block 存储类型修饰符.局部变量的__block 的存储和 register.auto.static 等存储类型相似,但它们之间不兼容. __block 变量保存在变量共享的作用域范围内,所有的 blocks 和 block 副本都声明或创建在和变量的作用域相同范围内.所以,如果任何 blocks 副本声明在栈内并未超出栈的结束时,该存储会让栈帧免于被破坏(比如封装为以后执行).同一作用域范围内给定的多个 bl…
一.全局变量和局部变量 全局变量和局部变量的区别在于作用域的不同.此外还有静态全局变量和静态局部变量. 全局变量作用域为全局,在一个源文件中定义,其他的源文件也可以应用.在其他的源文件中使用extern加以声明: 静态全局变量作用域为该源文件,只作用在声明它的源文件中,通过static声明,这样即使在其他的源文件中有相同名称的变量也不相同: 局部变量作用域为函数内部.当函数被调用时,为其分配空间,函数调用完成后收回内存,销毁变量: 局部静态变量作用域为局部,只被初始化一次,但是在后面它一直存在.…
C++ Primer 第二章 变量和基本类型 2.1 基本内置类型 C++定义了一组表示整数.浮点数.单个字符和布尔值的算术类型(arithmetic type),此外还定义了Void类型. 算术类型的存储空间大小(指用了表示该类型的二进制位数)依机器而定,C++标准规定了每个算术类型的最小存储空间.实际上,大部分编译器都使用了更大的存储空间. 表2-1   C++:算术类型 类型 含义 最小存储空间 备注 整型 布尔值 bool 布尔型 -------- 字符型 char 字符型 8位 通常是…