朗朗空间

我知道并不是 所有鸟儿都飞翔

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  16 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新随笔

最新评论

阅读排行榜

评论排行榜

存储类、链接和内存管理
1.作用域
作用域描述了程序中可以访问一个标识符的一个或多个区域。
一个C变量的作用域可以是代码块作用域、函数原型作用域或者文件作用域。
代码块作用域
一个代码块是包含在开始花括号和对应的结束花括号之内的一段代码。
例如,整个函数体是一个代码块。
一个函数内的任一复合语句也是代码块。
在代码快中定义的变量具有代码块作用域(block scope),从该变量被定义的地方到包含该定义的代码块的末尾该变量均可见


另外,函数的形式参数尽管在函数的开始花括号前进行定义,也同样具有代码块作用域,并且属于包含函数体的代码块。

double blocky (double cleo)
{
    
double patrick = 0.0;
    
    
return patrick;
}

在上面这个例子中,cleo和patrick都有知道结束花括号的代码作用域。

在一个内部代码块中声明的变量,其作用域只局限于该代码块:

double blocky (double cleo)
{
    
double patrick = 0.0;
    
int i;
    
for (i=0; i < 10; i++)
    
{
        
double q = cleo * i// q作用域的开始
        ……
        
patrick *= q;
    
}//q作用域的结束
    
return patrick;
}

在这个例子中,q的作用域被限制在内部代码块内,只有该代码内的代码可以访问q。
C99允许在一个代码块中的任何位置声明变量,使用之前请注意编译器能不能支持。
如,你可以这样声明

for (int i=0; i < 10; i++ )
{
    
printf ("A C99 feature: i=%d", i);
}

2.函数原型作用域
从变量定义处一直到原型声明的末尾,这意味着编译器在处理一个函数原型的参数时,它所关心的只是该参数的类型;您使

用的名字是无关紧要的。

int mighty (int mouse, double large);

3.文件作用域
一个在所有函数之外定义的变量具有文件作用域 (file scope)。
具有文件作用域的便狼从它定义处到包含该定义的文件结尾处都是可见的。

#include <stdio.h>
int units = 0;//具有文件作用域的变量
void critic (void);
int main (void)
{
    ……
}
 
void critic (void)
{
    ……
}

这里,变量units具有文件作用域,在main ()和critic ()中都可以使用它。因为它们可以在不止一个函数中使用,文件作用域变量也被称为全局变量(global varibale)。

4.goto
函数作用域只适用于goto语句使用的标签。函数作用域意味着一个特定函数中的goto标签对该函数中任何地方的代码都是可见的,无论该标签出现在哪一个代码块中。

posted on 2008-05-06 18:21 聂元朗 阅读(510) 评论(0)  编辑 收藏 引用 所属分类: C语言学习笔记

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理