C语言函数的作用域规则

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论


4.2.3动态存储变量
从变量的作用域原则出发,我们可以将变量分为全局变量和局部变量;换一个方式,从变量的生存期来分,可将变量分为动态存储变量及静态存储变量。
动态存储变量可以是函数的形式参数、局部变量、函数调用时的现场保护和返回地址。
这些动态存储变量在函数调用时分配存储空间,函数结束时释放存储空间。动态存储变量的定义形式为在变量定义的前面加上关键字“auto”,例如:
auto int a,b,c;
“auto”也可以省略不写。事实上,我们已经使用的变量均为省略了关键字“auto”的动态存储变量。有时我们甚至为了提高速度,将局部的动态存储变量定义为寄存器型的变量,定义的形式为在变量的前面加关键字“register”,例如:
register int x,y,z;
这样一来的好处是:将变量的值无需存入内存,而只需保存在CPU内的寄存器中,以使速度大大提高。由于CPU内的寄存器数量是有限的,不可能为某个变量长期占用。因此,一些操作系统对寄存器的使用做了数量的限制。或多或少,或根本不提供,用自动变量来替代。
4.2.4静态存储变量
在编译时分配存储空间的变量称为静态存储变量,其定义形式为在变量定义的前面加上关键字“static”,例如:
static int a=8;
定义的静态存储变量无论是做全程量或是局部变量,其定义和初始化在程序编译时进行。
作为局部变量,调用函数结束时,静态存储变量不消失并且保留原值。

从上述程序看,函数f()被三次调用,由于局部变量x是静态存储变量,它是在编译时分配存储空间,故每次调用函数f()时,变量x不再重新初始化,保留加1后的值,得到上面的输出。

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答