变量_存储类别、生存期
2017-05-13 14:13
190 查看
书中函数第7章,7.8节及以后的部分,这部分是学了函数后才用得到的,不过用上了函数的话这些概念就十分重要了
auto自动、static静态(存储在静态存储区)、register寄存器(快)
static在全局变量使外部文件无法引用的方式在另一篇文章【函数_内部&外部/全局&局部_函数/变量】里。此处只讲静态局部变量
static这里着重讲一下
a=2,b=1,c=4
7
a=2,b=1,c=5
8
a=2,b=1,c=6
9
这就是静态变量的深刻含义:函数调用时仍然不会被赋初值!(简直是全局变量了有木有!(雾))
书P206下方:(2)对静态局部变量在编译时赋初值的,即只赋值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而是只保留上次函数调用结束时的值。……而对自动变量赋初值,是在函数调用时进行的,每调用一次函数重新给一次初值,相当于赋值语句
另外提一嘴:
书上P42:可以说,常变量是具有名字的不变量,而常量是没有名字的不变量。
定义符号常量#define指令,它只是用符号常量代表一个字符串,在预编译时仅仅是进行字符替换,在预编译后,符号常量就不存在了(全换成3.14159了),对符号常量是不分配存储单元的。而常变量要占用存储单元,有变量值,只是该值不改变而已。
常变量具有符号常量的优点,而且使用更方便。
auto自动、static静态(存储在静态存储区)、register寄存器(快)
#include <stdio.h> /*书中函数第7章,7.8节及以后的部分,这部分是学了函数后才用得到的,不过用上了函数的话这些概念就十分重要了 */ int h;//定义全局变量,有效范围从此定义开始到本源文件结束 void test(int g)//形参,在本函数内有效,函数结束时销毁;【局部变量能“覆盖”_同名_全局变量】 {//本函数内有效【函数之内的局部变量】 //auto int a1;//自动变量【也是存储类别什么都不写时的缺省】动态存储区 int a2;//与上一行等价 //.新版C++定义auto不能和任何类型进行组合; static int b;//static在局部变量时,程序内存不释放【就定义那次赋值,离开函数 值仍保留】静态存储区;用在全局变量时,外文件无法引用 register int c;//将局部变量的值放在寄存器中 for(int i=1;i<2;i++)//复合语句内有效,用完就释放;【复合语句内的局部变量】 { printf("%d",i); } } void main() { int d=20170513;//相应的,这也就只在main函数内有效 test(d); }
static在全局变量使外部文件无法引用的方式在另一篇文章【函数_内部&外部/全局&局部_函数/变量】里。此处只讲静态局部变量
static这里着重讲一下
//P205例7.16 int main() { int f(int);//声明 int a = 2, i; for (i = 0; i < 3; i++) printf("%d\n", f(a)); return 0; } int f(int a) { int b = 0;//自动局部变量 static int c = 3;//静态局部变量 b = b + 1; c = c + 1; printf("a=%d,b=%d,c=%d\n",a,b,c);//这一句是我后加的 return(a + b + c); }运行结果:
a=2,b=1,c=4
7
a=2,b=1,c=5
8
a=2,b=1,c=6
9
这就是静态变量的深刻含义:函数调用时仍然不会被赋初值!(简直是全局变量了有木有!(雾))
书P206下方:(2)对静态局部变量在编译时赋初值的,即只赋值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而是只保留上次函数调用结束时的值。……而对自动变量赋初值,是在函数调用时进行的,每调用一次函数重新给一次初值,相当于赋值语句
另外提一嘴:
常变量 const
#define PI 3.14159 const float pi=3.14159
书上P42:可以说,常变量是具有名字的不变量,而常量是没有名字的不变量。
定义符号常量#define指令,它只是用符号常量代表一个字符串,在预编译时仅仅是进行字符替换,在预编译后,符号常量就不存在了(全换成3.14159了),对符号常量是不分配存储单元的。而常变量要占用存储单元,有变量值,只是该值不改变而已。
常变量具有符号常量的优点,而且使用更方便。
相关文章推荐
- 变量的存储类别及生存期申明方式和作用域
- 变量的存储类别
- C语言程序阅读-变量的存储类别、函数及参数
- 深入理解C++中变量的存储类别和属性
- 深入理解C++中变量的存储类别和属性
- C语言温习笔记之变量的存储类别
- 变量的存储类别小总结
- 变量的存储类别详解一
- 变量的存储方式和生存期(局部变量and全局变量)
- c++基础:const,变量的作用域和生存期,存储类型
- C/C++中的变量存储类别以及内存分配
- C语言变量的存储类别专题讲座-学C者必看
- C/C++中的变量存储类别以及内存分配
- 变量存储类别
- C++之内置函数、函数模板、变量的存储类别、类、析构函数、指针
- 变量的存储方式和生存期
- 程序中变量存储类别
- 局部变量的存储类别:自动变量和静态变量
- C/C++中的变量存储类别以及内存分配
- C语言学习笔记:12_变量的存储方式和生存期