第九章 程序结构

目录

9.1 局部变量

一、定义

二、性质

(一)  具有自动存储期限

(二)  具有块作用域

三、静态局部变量

(一)  格式

(二)  特殊性质

四、形参与局部变量的异同

(一)  异

(二)  同

9.2 全局变量(外部变量)

一、定义

二、性质

(一)  具有静态存储期限

(二)  具有文件作用域

三、利弊

(一)  利

(二)  弊

四、注意事项

五、作用之一

9.3 程序块

一、含义

二、作用

三、注意事项

9.4 作用域

一、含义

二、分类

三、重要规则之一

9.5 构建C程序

一、最常见的编排顺序

二、建议


9.1 局部变量

一、定义

在函数体内声明的变量称为局部变量

二、性质

(一)  具有自动存储期限

当包含局部变量的函数返回时,局部变量的值无法保留,即:再次调用该函数时,无法保证变量仍拥有原先的值

(二)  具有块作用域

1°  含义:可以引用该变量的程序文本的部分

2°  范围从变量声明的点一直到所在函数体的末尾(局部变量的作用域不可延伸到其所属函数之外)

三、静态局部变量

(一)  格式

static 类型名 变量名称

(二)  特殊性质

具有静态存储期限而没自动存储期限

当包含静态局部变量的函数返回时,该变量的值将被保留,即:再次调用该函数时,该变量仍拥有原先的值

四、形参与局部变量的异同

(一)  异

在每次函数调用时对形参自动进行初始化(调用中通过赋值获得相应实参的值)

(二)  同

形参拥有和局部变量一样的性质


 

9.2 全局变量(外部变量)

一、定义

在任何函数体外声明的变量称为全局变量

二、性质

(一)  具有静态存储期限

当含全局变量的函数返回时,该变量的值将被保留

(二)  具有文件作用域

1°含义:可以引用该变量的程序文本的部分 

2°范围从变量被声明的点开始一直到所在文件的末尾  (跟随在全局声明后的所有函数都可访问并修改)

三、利弊

(一)  利

在多个函数必须共享一个变量或少数几个函数共享大量变量时,使用全局变量很是方便

(二)  弊

1°在程序维护期间,若改变全局变量(如改变其类型),则将需要检查同一文件中的每个函数,以确定该变化如何对函数产生影响 

2°若全局变量被赋予了错误的值,则可能很难确定出错的函数 

很难在其他程序中再次使用依赖于全局变量的函数  (由于依赖全局变量的函数并不 “独立”,在另一个程序中使用该函数必须带上此函数所需的全局变量) 

4°当许多C程序员过于依赖全局变量时,会出现一个普遍陋习

    在不同函数中为不同目的使用同一全局变量而非不同局部变量,使该变量对所有函数均可见,且会产生误导:阅读者可能认为变量的使用彼此关联(而实      际上不是)

四、注意事项

使用全局变量时,要确保它们都拥有有意义的名称

(局部变量不是总需要有意义的名称,因为往往很难为for循环中的控制变量起一个比 "i" 更好的名称)

五、作用之一

实现栈 (stack)


9.3 程序块

一、含义

由一组大括号 " {} " 括起来的语句

二、作用

用于定义变量的作用域控制变量的生命周期以及组织代码逻辑

三、注意事项

C99允许在程序块的任何地方声明变量


9.4 作用域

一、含义

某变量的作用域指可以引用该变量的程序文本的部分

二、分类

(一)  程序块作用域

(二)  文件作用域

(三)  函数作用域 

(四)  函数原型作用域

三、重要规则之一

当程序块内的声明命名一个标识符时,若此标识符已经是可见的(因为此标识符拥有文件作用域或某块作用域 ),新的声明临时“隐藏”了旧的声明,标识符获得了新的含义,且在程序块末尾,标识符重新获得旧的含义


9.5 构建C程序

一、最常见的编排顺序

#include 指令

#define 指令

类型定义

全局变量的声明

除 main 函数之外的函数原型

main 函数的定义 

其他函数的定义

二、建议

在每个函数定义前或每个函数原型前放盒型注释,给出函数名、函数目的、每个形参含义、返回值及所有副作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值