The C Programming Language(第 2 版) 笔记 / 4 函数与程序结构 / 4.8 程序块结构

目录、参考文献


4.8 程序块结构

C 语言并不是 Pascal 等语言意义上的程序块结构的语言,它不允许在函数中定义函数
但是,在函数中可以以程序块结构的形式定义变量
变量的声明(包括初始化)除了可以紧跟在函数开始的花括号之后,还可以紧跟在任何其它标识复合语句开始的左花括号之后
以这种方式声明的变量可以隐藏程序块外与之同名的变量,它们之间没有任何关系,并在与左花括号匹配的右花括号出现之前一直存在
例如,在下面的程序段中:

if (n > 0) { 
    int i; /* declare a new i */ 
    for (i = 0; i < n; i++) 
        ... 
}

变量 i 的作用域是 if 语句的 “ 真 ” 分支,这个 i 与该程序块外声明的 i 无关
每次进入程序块时,在程序块内声明以及初始化的自动变量都将被初始化
静态变量只在第一次进入程序块时被初始化一次

自动变量(包括形式参数)也可以隐藏同名的外部变量与函数
在下面的声明中:

int x; 
int y; 
f(double x) 
{ 
    double y; 
}

函数 f 内的变量 x 引用的是函数的参数,类型为 double
而在函数 f 外,xint 类型的外部变量
这段代码中的变量 y 也是如此

在一个好的程序设计风格中,应该避免出现变量名隐藏外部作用域中相同名字的情况,否则,很可能引起混乱和错误


目录、参考文献

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值