C语言中变量储存的类别

C语言根据变量的生存周期来划分,可以划分为静态存储方式和动态存储方式。

C语言中变量储存的类别

静态存储方式:是指在程序的运行期间分配固定的存储空间的方式。静态存储区中存储放了在整个程序执行过程中都存在的变量,如全局变量

动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行需要而进行的需要而建立和释放的。通常包括: 1. 函数形式参数;2. 自动变量;3. 函数调用时的现场保护、4. 和返回值地址等。

C语言中的存储类别又分为4类:

自动(auto)、

静态(static)、

动态(extern)

寄存器(register)

1、 用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为”自动存储类别“,属于动态存储方式。1

2

3

4

5int fn(int a)//定义f函数,a为参数

{

//定义b,c为自动变量

auto int b,c;

}

2、用static修饰的.为静态变量,如果定义在函数内部,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量,1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17#include

void fn()

{

static int x =0;

x++;

printf("fn: x=%d

",x);

}

int main()

{

int i;

for(i=0;j<10;i++)

{

fn();

}

return 0;

}

注意:

静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;

静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时,不赋初值的话,则对静态局部变量来说,编译时自动赋初值0.(对数值型变量)或空字符(对字符变量)。

3、为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫”寄存器变量“,用关键字register做声明1

2

3

4void fn()

{

register int i;

}

注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量

局部静态变量不能定义为寄存器变量。

4、用extern声明的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量1

2

3

4

5

6

7#include

int main()

{

extern int x;//这里声明的是外部局部变量

printf("extern x=%d

",x);

}

int x=100;

任务:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19#include

void fn()

{

static int x = 1;

x *= 2;

printf("x=%d

",x);

}

int main()

{

int i;

for(i=0;i<5;i++)

{

fn();

}

extern int x;

printf("x=%d

",x);

return 0;

}

int x = 100;

运行结果是x=2;x=4;x=8;x=16;x=32;x=100

C语言里的4种存储类别,C语言中变量储存的类别相关推荐

  1. 数据结构c语言——树的三种存储结构(双亲表示法、孩子表示法、兄弟表示法)

    在大量的应用中,人们曾使用多种形式的存储结构来表示树.这里,我们介绍3种常用的链表结构. 1.双亲表示法: 假设以一组连续空间存储树的结点,同时在每个结点中附设一个指示器指示其双亲结点在链表中的位置, ...

  2. python 是什么类型的语言-python是一种什么类型的语言

    小时不识月,呼作白玉盘.很多人习惯地说Python不过是一种脚本语言而已,实际上这种说法是非常不准确的,完全不能体现出Python的强大. 严格来说,Python是一门跨平台.开源.免费的解释型高级动 ...

  3. c 语言程序的三种基本结构,C 语言程序的三种基本结构是____ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构...

    C 语言程序的三种基本结构是____ A.顺序结构,选择结构,循环结构 B.递归结构,循环结构,转移结构 更多相关问题 [填空题]移动电商,全称 ,是以 为载体的电商模式. [单选题]有关离子选择性电 ...

  4. erlang 变量存储在哪里_erlang中变量作用域

    http://erlangdisplay.iteye.com/blog/315452 _开头(包括_)在erlang可以是表明,这个变量可以存任意东西,就是我们常说的全匹配,_A一般来说就是表明这个东 ...

  5. c语言中变量有几种存储方式,C语言变量的存储类别有哪些详细资料介绍

    描述 C语言中的变量根据其生存周期,可以分为静态存储方式和动态存储方式. 静态存储方式:是指在程序运行期间分配固定的存储空间的方式.静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量. 动 ...

  6. c语言字母存储,字符串在内存中的储存——C语言进阶

    字符串在内存中的存储--C语言进阶 字符串是以ASCII字符NUL结尾的字符序列.ASCII字符NUL表示为\0.字符串通常存储在数组或者从堆上分配的内存中.不过,并非所有的字符数组都是字符串,字符数 ...

  7. eem二级c语言题库哪种比较好,c语言小知识,供初学者参考

    1 用预处理指令 define 声明一个常数 用以表明 1 年中有多少秒 忽略闰年问题 define SECONDS PER YEAR 60 60 24 365 UL 2 写一个 标准 宏 MIN 这 ...

  8. c语言提供了三种预处理命令,C语言提供的三种预处理命令

    C语言的三种预处理包括:宏定义(#define).文件包含(#include).条件编译(#if.#else.#endif). 1,不带参数的宏定义: #define 标示符 字符串 在预编译时将宏名 ...

  9. c语言里的fun是什么函数,c语言fun函数有什么作用

    c语言fun函数的作用是被主函数所调用,来定义一个函数或方法,这样在引用时可以用fun表示,比如[int fun(int x,int y)]. c语言fun函数的作用是: C语言中,fun函数通常被主 ...

最新文章

  1. 016-热更新之FishingJoy一
  2. Nature灵魂拷问:微生物组数据一大堆,如何能改变人类健康?
  3. Data Protection Manager 2010 系列之安装部署
  4. aspx页面中使用%= %的注意事项
  5. shell脚本调试中打开set选项
  6. 数据库-索引-普通索引-唯一索引
  7. I - The Mad Mathematician FZU - 2042(未解决)
  8. Skype for Business Server 2019 本地部署
  9. windows下封一些危险的端口
  10. 阿里云服务器选购之国际版和国内版的平台对比及建议
  11. python凯撒密码实验报告_凯撒密码的python实现
  12. 怎么让人物脚贴地 模型_3DMax人物模型关键帧,如图怎么把那红点的位置弄到脚后跟?...
  13. 北语计算机基础知识作业1,【图】- 北京语言大学20秋《计算机基础》作业1 - 昆山经济开发区其他教育培训 - 昆山百姓网...
  14. Altium Designer 18中的Multi-board Schematic–Defaults
  15. 如何用python解方程组_python如何解方程组
  16. tf.estimator.Estimator解析
  17. linux搭建泰拉瑞亚(Terraria)服务器
  18. Android基站定位——三基站(多基站)定位(三)
  19. Android系统 Systrace调试使用说明
  20. PAT - 1028 人口普查

热门文章

  1. 商品录入【规格选择】
  2. 浅谈Mifare ultralight原理
  3. 【WEB基础-黑马】font字体
  4. 优秀课程案例:如何用scratch实现小猫吃鱼的游戏
  5. 【附源码】Python计算机毕业设计网上宠物店预约系统
  6. 24届近5年河北工业大学自动化考研院校分析
  7. C语言花窗图案,古建筑户牖知识 | 传统中式花窗形态及寓意
  8. Windows编程之--桌面壁纸实现深入探索
  9. 关系型数据库横向扩展的三种方法
  10. 对一个元素 同时添加单击onclick 和 双击ondblclick 触发冲突的解决