服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - EasyC++内部链接性和无链接性

EasyC++内部链接性和无链接性

2022-07-16 11:10梁唐 C/C++

这篇文章主要介绍了EasyC++内部链接性和无链接性,当我们使用static关键字,将变量的作用于限制在整个文件时,该变量的链接性为内部链接性,然而无链接性的变量其实就是在代码块当中使用static关键字创建的,接下来一起进入文

文章转自微信公众号:Coder梁(ID:Coder_LT)

1.内部链接性

当我们使用static关键字,将变量的作用于限制在整个文件时,该变量的链接性为内部链接性。在多文件的程序当中,内部链接性和外部链接性是有所差别的,内部链接性的变量只能在当前文件使用,而常规外部变量是可以跨文件使用的。

但这就带来了一个问题,如果我们在两个文件当中都定义了同一个全局变量,会发生什么呢?

?
1
2
3
4
5
// file1
int error = 20;
 
// file2
int error = 5;

答案是:这样的做法会报错,因为它违反了单定义规则。

但是我们可以将其中一个变量通过static关键字变成静态内部变量,那么在该文件当中,静态变量将隐藏常规的外部变量:

?
1
2
3
4
5
// file1
int error = 20;
 
// file2
static int error = 5;

这样做的好处是,当我们确定我们某些变量的使用范围只有当前文件的时候,我们可以使用static关键字来防止它和一些其他文件当中的外部变量相冲突。

2.无链接性

无链接性的变量我们在之前的文章当中也曾经提到过,其实就是在代码块当中使用static关键字创建的。

在代码块当中创建的静态变量会和代码块的生命周期脱钩,虽然它只能在代码块运行时使用,但它的结果会一直存在,并不会随着代码块的执行结束而消亡。

?
1
2
3
4
5
6
7
8
9
10
11
void test() {
 static int ret = 0;
 ret++;
 cout << ret << endl;
}
 
int main() {
    test();
 test();
 return 0;
}

这段代码的运行之后将会得到1和2,因为ret是一个无链接性的静态变量,它会一直存在。所以当test运行一次之后,它的结果会变成1,并被保存下来。

主要应用场景就是我们希望有些变量能够随着代码块的运行有所沉淀,记录下中途的状态或者是中间结果。有了静态变量就可以不必使用全局变量了。

到此这篇关于EasyC++内部链接性和无链接性的文章就介绍到这了,更多相关C++内部链接性和无链接性内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

延伸 · 阅读

精彩推荐
  • C/C++C语言如何用顺序栈实现回文序列判断

    C语言如何用顺序栈实现回文序列判断

    这篇文章主要为大家介绍了C语言如何用顺序栈来实现回文序列的判断,文中含有详细的代码示例及分析,有需要的朋友可以借鉴参考下,希望能够有所帮助...

    正在学c的小白3392022-01-24
  • C/C++C语言文件打开的模式

    C语言文件打开的模式

    这篇文章主要介绍了C语言文件打开的模式,以及相关的原理和知识点做了分享,有兴趣的朋友参考学习下。...

    Andrew_qian9052021-06-21
  • C/C++C++实现多线程查找文件实例

    C++实现多线程查找文件实例

    这篇文章主要介绍了C++实现多线程查找文件实例,对于深入学习C++程序设计有着很好的参考借鉴价值,需要的朋友可以参考下...

    C++教程网4352021-02-06
  • C/C++Unity编辑器下重启的方法

    Unity编辑器下重启的方法

    这篇文章主要介绍了Unity编辑器下重启的方法的相关资料,希望通过本文能帮助到大家,让大家学习理解这部分内容,需要的朋友可以参考下...

    wuzhang11762021-06-06
  • C/C++c++ const引用与非const引用介绍

    c++ const引用与非const引用介绍

    const引用是指向const对象的引用,可以读取ref,但不能修改所以也就有将const变量赋值给非const引用是非法的,感兴趣的朋友可以了解下,或许本文对你有所帮助...

    C++教程网2582020-11-17
  • C/C++C++相交链表和反转链表详解

    C++相交链表和反转链表详解

    这篇文章主要介绍了C++相交链表和反转链表,结合实例形式分析了C++相交链表和反转链表的原理、实现方法及相关注意事项,需要的朋友可以参考下...

    久病成良医10992021-12-18
  • C/C++头文件不宜定义变量的原因全面解析

    头文件不宜定义变量的原因全面解析

    以下是对头文件不宜定义变量的原因进行了详细的分析介绍,需要的朋友可以过来参考下...

    C语言教程网6532020-12-29
  • C/C++C++编写的WebSocket服务端客户端实现示例代码

    C++编写的WebSocket服务端客户端实现示例代码

    本文主要介绍了C++编写的WebSocket服务端客户端实现示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    kagula0865852022-02-16