云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > c语言作用域,链接属性和存储类型

c语言作用域,链接属性和存储类型

  • 62 次阅读
  • 3 次下载
  • 2025/7/9 19:15:54

c语言作用域,链接属性和存储类型

一.作用域 作用域的分类

1.代码块作用域,一对花括号之间的所有语句为代码块,,任何代码块申明的标识符就具有代码块作用域,它可以被这个代码块的所有语句所访问。该标志符的作用域到该代码块的尾部便结束。如果一个代码块中有嵌套,而嵌套中的的标识符与外面代码块中的标识符名字相同,那么内层的标识符将隐藏外层的标识符,外层的标识符将无法通过名字在内层进行引用。

***但是我们应该尽量避免嵌套中和外层有相同的变量名,尽管会出现错误,但是可能会在代码维护时引起不必要的麻烦

2.文件作用域。任何在代码块之外的标志符具有文件作用域,该标识符存储与静态内存中。

***函数名也具有代码块作用域

3.原型作用域。这只是用与在函数原型中申明的参数名。原型作用域及时防止参数名和程序其他部分的名字的冲突。但是,事实上,唯一可冲突的地方就是在同一个原型中,同一个名字被多次重复使用。而函数申明中的参数名不必与函数原型的名字相同。

4.函数作用域,只适用于语句标签。(可不必了解)

二.链接属性

链接属性一共分为三种,分别是external(外部),internal(内部),none(无,注意,none不等于缺省)。

1.internal链接属性在同一个文件中无论被申明多少次都指同一个实体,而在不同文件中,则表示不同的实体。

2.external链接属性的标识符无论被申明多少次,位于几个不同源文件,都表示同一个实体。

3.none则被当做单独的个体,也就是说标识符多个申明被当做独立不同的实体,比如说函数内部的局部变量。

链接属性的修改:

(1)extern和static可以修改标识符的链接属性,如果一个标识符的链接属性是external,如全局变量int a=10;的申明,前面加上static,那么链接属性被修改为internal。但是static只对链接属性为external的标识符起作用,如果该标识符链接属性不是external,那么则没有意义。

(2)extern可以为每一个标识符指定external属性,这样就可以访问其他任何位置定义的该实体。

***注意,extern用于该标识符第一次申明时,可以改变链接属性,但是用于第二次或以后的申明时,则不会改变原来的链接属性。例如,第一次static int a=10;的申明,如果第二次申明为extern int a=10; a的链接属性任然是internal。

三.存储类型

变量的存储类型是指变量值的存储类型。有三个地方可以存储变量:普通内存,运行时堆栈,硬件寄存器。

变量缺省的的存储类型取决于它申明的位置。

(1)凡代码块外(全局变量)申明的变量存储与静态内存中。

(2)代码块内的变量(局部变量)储存在堆栈里面,如果前面加上static,那么则存储在静态内存区。

(3)register则提示变量存储在硬件寄存器中,而不是内存中这样访问效率更高。但是如果代码中有多个register修饰的变量,那么可能并不是所有的都存储在寄存器中,编译器只选取几个实际的变量存储在寄存器中,其余的存储在堆栈中。

********static用于代码块外面申明变量时,或者函数定义时,是修个链接属性,从external修改为internal(并不改变存储类型,因为此时的变量本来就是在静态存储区)。但是static用于代码块内部,static则是修改存储类型,并不改变链接属性。

搜索更多关于: c语言作用域,链接属性和存储类型 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

c语言作用域,链接属性和存储类型 一.作用域 作用域的分类 1.代码块作用域,一对花括号之间的所有语句为代码块,,任何代码块申明的标识符就具有代码块作用域,它可以被这个代码块的所有语句所访问。该标志符的作用域到该代码块的尾部便结束。如果一个代码块中有嵌套,而嵌套中的的标识符与外面代码块中的标识符名字相同,那么内层的标识符将隐藏外层的标识符,外层的标识符将无法通过名字在内层进行引用。 ***但是我们应该尽量避免嵌套中和外层有相同的变量名,尽管会出现错误,但是可能会在代码维护时引起不必要的麻烦 2.文件作用域。任何在代码块之外的标志符具有文件作用域,该标识符存储与静态内存中。 ***函数名也具有代码块作用域 3.原型作用域。这只是用与在函数原型中申明的参数名。原型作用域及时防止参数名和程序其他部分的名

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com