1、代码块作用域(block scope)

位于一对花括号之间的所有语句称为一个代码块,在代码块的开始位置声明的标识符具有代码块作用域,表示它们可以被这个代码中的所有语句访问。函数定义的形式参数在函数体内部也具有代码块作用域。当代码块处于嵌套状态时,如果内层代码块有一个标识符与外层代码块的标识符同名,则内层的标识符将屏蔽外层的标识符,也就是外层的标识符无法在内层代码块中通过名字访问。如运行以下代码:

int a(int b){

printf("外层的b:%d\n",b);

{

int b=3;

printf("内层的b:%d\n",b);

}

}

int main(){

a(2);

system("pause");

return 0;

}

得到的结果就是

外层的b:2

内层的b:3

2、文件作用域(file scope)

任何在代码块之外的标识符都具有文件作用域,它表示这些标识符从声明之处开始到它所有的源文件结尾处都是可以被访问的。在头文件中编写并通过#include指令包含到其他文件中的声明就好像它们是直接写在那些文件中一样,它们的作用域并不局限于头文件的文件尾。

3、原型作用域(prototype scope)

原型作用域只适用于在函数原型中声明的参数名如:

int a(int b);//这是一个函数原型声明

在上面的函数原型声明中,参数b的名字并非必需,但是如果出现参数名,可以随便取,可以不跟函数定义中的形参名匹配,也不必与函数实际调用时传递的实参匹配。原型作用域防止这些参数名与程序其他部分的名字冲突。

4、函数作用域(function scope)

The only type of identifier with function scope is a label name. A label is implicitly declared by its appearance in the program text and is visible throughout the function that declares it.

A label can be used in a goto statement before the actual label is seen.

可见唯一有函数作用域的标识符类型是标签名称(label name),什么是标签呢,The label consists of the identifier and the colon (:) character. 类似于下面这样的就是了:

identifier:statement

case:1

default:

goto:statement

A label name must be unique within the function in which it appears.

函数中出现的标签名称必须唯一。

c语言中标识符的作用域的更多相关文章

  1. C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型

    Technorati 标签: C,标识符,作用域,命名空间,链接属性,生命周期,存储类型,scope,name space,linkage,storage durations,lifetime 无论学 ...

  2. 【转】C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型

    参考网址:http://blog.csdn.net/zhanglianpin/article/details/41575849 绝对的经典.

  3. C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期

    全局变量 作用域:全局作用域(全局变量只需在一个源文件中定义,就可以作用于所有的源文件.) 生命周期:程序运行期一直存在 引用方法:其他文件中要使用必须用extern 关键字声明要引用的全局变量. 内 ...

  4. C语言中变量的作用域和生命周期

    变量的类型: 1. 局部变量和全局变量 局部变量也称为内部变量. 局部变量是在函数内作定义说明的.其作用域仅限于函数内, 离开该函数后再 使用这种变量是非法的. 全局变量也称为外部变量,它是在函数外部 ...

  5. C语言中变量、全局变量与变量的作用域

    什么是变量: 变量常量都是表征数据的一种形式:常量用来表示数据的值: 变量不仅可以用来表示数据的值:还可以用来存放数据:因为变量对应着一定的内存单元: 变量和常量必须先定义后使用. 变量名和常量名都是 ...

  6. C/C++语言中变量作用域:局部变量,全局变量,文件级变量

    C/C++语言中的变量分为全局变量和局部变量. 这样的划分方式的根据是变量的可见范围或者叫做作用域. 1 局部变量 局部变量指的是定义在{}中的变量,其作用域也在这个范围内.尽管常见的局部变量都是定义 ...

  7. GO中标识符,标识符,变量,常量,iota

    参考:https://www.cnblogs.com/nickchen121/p/11517455.html 一.标识符与关键字 1.标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变 ...

  8. C++标识符的作用域与可见性

    一.标识符的作用域与可见性 作用域讨论的是标识符的有效范围,可见性讨论的是标识符是否可以被引用. 二.作用域 作用域是一个标识符在程序正文中有效的区域.C++中标识符的作用域有函数原型作用域.局部作用 ...

  9. C语言中的作用域、链接属性与存储属性

    C语言中的作用域.链接属性与存储属性 一.作用域(scope) 代码块作用域 表示{}之间的区域,下例所示,a可以在不同的代码块里面定义. #include<stdio.h> int ma ...

随机推荐

  1. Scala 安装 Exception in thread "main" java.lang.VerifyError: Uninitialized object exists on backward branch 96

    windows下载安装完最新版本的Scala(2.12.4)后,终端如下错误 C:\Users\Administrator>scala -versionException in thread & ...

  2. [置顶] xamarin android Fragment实现底部导航栏

    前段时间写了篇关于Fragment的文章,介绍了基础的概念,用静态和动态的方式加载Fragment  Xamarin Android Fragment的两种加载方式.下面的这个例子介绍xamarin ...

  3. bzoj 4539: [Hnoi2016]树

    Description 小A想做一棵很大的树,但是他手上的材料有限,只好用点小技巧了.开始,小A只有一棵结点数为N的树,结 点的编号为1,2,-,N,其中结点1为根:我们称这颗树为模板树.小A决定通过 ...

  4. SSH远程登录密码尝试

    import threading #创建一个登陆日志,记录登陆信息 paramiko.util.log_to_file('paramiko.log') client = paramiko.SSHCli ...

  5. appium 解锁九宫格

    很多人在自动化的过程中,对解锁9宫格有很多麻烦,特别是app上的有些整个放在整个view中,这就给我们测试解锁九宫格带来问题了,笔者尝试了去解决,但是都没有找到一个很好的方案,那么我就试着先去通过安卓 ...

  6. Ruby学习之元编程

    Kernel#evel()方法 和Object#instance_evel().Module#class_evel()方法类似,evel()方法也是一个内核方法,Object#instance_eve ...

  7. .NET Core+MySql+Nginx 容器化部署

    .NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...

  8. Mac新手使用指南:brew安装的nginx常用命令

    安装:brew install nginx/sudo brew install nginx 启动:brew services start nginx/sudo brew services start ...

  9. Java学习笔记24(Integer类)

    这里介绍基本数据类型包装类,Integer是int的包装类, 其他的基本数据类型的包装类的方法和Integer的方法几乎一致,会一种即可全会 基本数据类型包装类的特点:用于在基本数据类型和字符串之间进 ...

  10. Eclipse 配置scala开发环境(windows)

    1. scala2.10.4.msi 安装 2. 配置SCALA_HOME 及path路径 SCALA_HOME C:\Program Files (x86)\scala PATH :%SCALA_H ...