C程序设计语言——七、函数(3)局部、全局、寄存器、外部变量

本文详细介绍了C语言中的变量作用域,包括局部和全局变量,以及它们在程序中的存储区域。同时,阐述了变量的生存期,如静态存储和动态存储,并讲解了C程序的四种存储类别:auto、static、register和extern。最后,通过四个例题展示了这些概念的实际应用。
摘要由CSDN通过智能技术生成

目录

一、变量的作用域:存在空间性

1、指变量在程序中的有效范围

2、局(内)部变量,分布在动态存储区

3、全(外)局变量,分布在静态存储区(静态局部变量也分布在此)

4、不同的变量所分配的程序区

二、变量的生存期:存在的时间性

1、静态存储(static) static int a;

2、动态存储(auto)  auto int a;

三、C程序的存储类别

1、auto 型(自动变量)(缺省:系统默认状态)

2、static 型(静态变量)

3、register 型(寄存器变量)

4、extern 型(外部变量)

四、例题

1、《选择法对数组中的6个整数按由小到大排序,过程由函数实现》

2、《编写一个函数,判断一个5位数是否是回文数》

3、《编程找出3~1000的所有完数》

4、《斐波那契数列》


一、变量的作用域:存在空间性

1、指变量在程序中的有效范围

2、局(内)部变量,分布在动态存储区

  1. 在函数内(符合语句内)定义的变量,它只在本函数内(复合语句内)有效
  2. 生存期是该语句块,进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效;随用随分配,用完就释放;
  3. 定义时不会自动初始化,除非程序员制定初值;
  4. 并列语句块各自定义的同名变量互补干扰,不同函数可以有相同的变量名
  5. 形参和实参可以同名;
  6. 形参也是局部变量;
  7. 主函数里的变量也是局部变量;
  8. 复合语句里定义的变量也是局部变量;复合语句的局部变量和本函数的局部变量同名时,本函数的局部变量不起作用;内部的优先

3、全(外)局变量,分布在静态存储区(静态局部变量也分布在此)

  1. 在所有函数之外定义的变量;
  2. 生存期是整个程序,从程序运行起占内存,程序退出时释放内存;
  3. 有效范围是从定义变量的位置开始到本程序结束;
  4. 全局变量必须在所有函数之外定义,且只能定义一次
  5. 如果在其作用域内的函数定义了同名局部变量,则在局部变量的作用域内,同名全局变量暂时不起作用;内部的优先
  6. 可以通过声明一个extern的全局变量扩展全局变量的作用域,也可以通过定义一个static的全局变量限制这种扩展;
  7. 全局变量增加函数间数据联系,函数只能返回一个值,可用影响全局变量的方式带回给主调函数多个值;
  8. 全局变量会降低程序的清晰性,因为所有函数都能影响变量的值;
  9. 全局变量的初值为0。

4、不同的变量所分配的程序区

程序区 静态存储区 动态存储区
变量作用域 全(外)局变量,静态局部变量 局部变量,寄存器变量
分配 编译时分配内存 随用随分配
释放 用完不释放,程序结束时释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值