栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[C语言基础]作用域,链接,存储周期

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[C语言基础]作用域,链接,存储周期

目录
    • 作用域
        • function--函数域
        • file--文件域
        • block--块域
        • function prototype--函数原型域
    • 链接
        • 内部链接
        • 外部链接
        • 空链接
    • 存储时期
        • static--静态生命周期
        • automatic--自动生命周期


九层之台,起于累土。


作用域

作用域:Scope of Identifiers。

同一标识符指定的不同实体要么具有不同的作用域,要么在不同的命名空间。

标准C定义了4个域:

  1. function(函数域)
  2. file(文件域)
  3. block(块域)
  4. function prototype(函数原型域)
function–函数域

函数域是指:从某函数的开始到函数的结束的一段范围。
标签 是唯一具有函数域的标识符类型。这意味着无论标签出现在该函数的什么地方,其对该函数的任何位置的代码都是可见的。

#include
...

void test()
{
	if(...)
		goto label;
label: 
	...
}
file–文件域

如果某标识符的声明出现在所有的块或者参数列表之外,则具有文件域。
文件域的范围从标识符声明处开始,到包含该声明的文件结尾处。

#include
...
int a; 
void test()
{
	...
}
block–块域

如果某标识符的声明出现在块或函数定义中的参数声明列表中,则其具有块域。
块域的范围从标识符声明开始,到块的末尾结束。

#include
...
void test(int a)
{
	int b; 
	if(...)
	{
		int c; 
	}
}
function prototype–函数原型域

如果某标识符的声明在函数声明的列表中,则其具有函数原型域。
函数原型域的范围一直到函数原型声明的末尾。

#include
...
void test(int a); 

链接

链接:linkage of Indentifiers

作用域是由编译器处理的属性,链接是由链接器处理的属性。

链接是一种属性,它描述了链接器如何链接标识符,是否只能在声明的文件中使用?是否可供另一个文件使用?…

链接有3种:
1.内部链接
2.外部链接
3.空链接

内部链接

如果一个具有文件作用域的对象或者函数的声明包含static,则该标识符具有内部链接。
内部链接只能在声明该标识符的文件内使用。

#include
...
static int a; 
static void test(); 
外部链接

外部链接是具有文件作用域的对象或函数的默认属性,可以在一个多文件程序的任何地方使用。
extern可以指定一个标识符具有外部链接,如果extern声明的标识符的先前声明可见并指定了内部或外部链接,则这个声明的标识符与之前声明的标识符的链接相同,如果没有可见的先前声明或者先前声明没有指定链接,则标识符具有外部链接。

#include 
int a;

...

#include 
extern int a;
空链接

具有块作用域和函数原型作用域的对象具有空链接。


存储时期

存储时期又叫生命周期,针对的是对象。
有2种生命周期:
1.static–静态生命周期
2.automatic–自动生命周期

static–静态生命周期

具有文件作用域,或者带有static声明的对象具有静态生命周期,它的生命周期是程序的整个执行过程,它的值只在程序开始初始化一次。

#include
...
int a; 
void test()
{
	static int b; 
}
automatic–自动生命周期

非文件作用域且没有static声明的对象具有自动生命周期。
具有自动生命周期的对象的生命周期,从定义对象开始,直到代码执行到该对象作用域的结束。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302547.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号