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

 更新时间:2021年12月17日 09:28:31   作者:梁唐  
这篇文章主要介绍了EasyC++内部链接性和无链接性,当我们使用static关键字,将变量的作用于限制在整个文件时,该变量的链接性为内部链接性,然而无链接性的变量其实就是在代码块当中使用static关键字创建的,接下来一起进入文章了解更多内容吧

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

1.内部链接性

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

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

// file1
int error = 20;

// file2
int error = 5;


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

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

// file1
int error = 20;

// file2
static int error = 5;

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

2.无链接性

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

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

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语言 风靡一时的黄金矿工游戏实现流程详解

    《黄金矿工》是一款非常经典的游戏。在游戏中,玩家通过不断挖矿,获取金子,最终能够闯入下一关。在这个过程中,会不断有岩石、烟雾、老鼠来捣乱,甚至还会出现扛着炸药包的小老鼠,玩家必须战胜它们,才能进入更深的矿坑
    2021-11-11
  • C语言代码实现简单的扫雷小游戏

    C语言代码实现简单的扫雷小游戏

    这篇文章主要为大家详细介绍了C语言代码实现简单的扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • 浅析iterator与指针的区别

    浅析iterator与指针的区别

    指针和iterator都支持减法运算,指针-指针得到的是两个指针之间的距离,迭代器-迭代器得到的是两个迭代器之间的距离
    2013-10-10
  • C语言实现文件版通讯录的代码分享

    C语言实现文件版通讯录的代码分享

    这篇文章主要为大家详细介绍了如何利用C语言实现一个文件版通讯录,主要运用了结构体,一维数组,函数,分支与循环语句等等知识,需要的可以参考一下
    2023-01-01
  • Qt示例教程之用Qt画一个温度计

    Qt示例教程之用Qt画一个温度计

    在Qt绘图中经常需要绘制一些仪表的刻度盘,比如温度计,下面这篇文章主要给大家介绍了关于用Qt画一个温度计的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • 浅谈C++模板元编程

    浅谈C++模板元编程

    本篇文章主要介绍了浅谈C++模板元编程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • C语言实现删除某一个数组值的方法

    C语言实现删除某一个数组值的方法

    这篇文章主要给大家分享C语言数组中删除数组中某个值的方法,既然要学习删除数组中的元素,我们就必须得先知道数组中有哪些元素。同时还要定义一个变量,并将需要删除的元素赋值给那个变量。下面来看看文章的详细内容吧
    2021-11-11
  • C语言基本排序算法之插入排序与直接选择排序实现方法

    C语言基本排序算法之插入排序与直接选择排序实现方法

    这篇文章主要介绍了C语言基本排序算法之插入排序与直接选择排序实现方法,结合具体实例形式分析了插入排序与直接选择排序的定义、使用方法及相关注意事项,需要的朋友可以参考下
    2017-09-09
  • Qt实现电子时钟的示例代码

    Qt实现电子时钟的示例代码

    这篇文章主要为大家详细介绍了如何利用Qt实现显示与桌面上并可以随意拖拽至桌面任意位置的电子时钟案例,感兴趣的小伙伴可以尝试一下
    2022-06-06
  • 十进制与BCD码转换的算法详解

    十进制与BCD码转换的算法详解

    BCD转换成十进制 BCD码是指用二进制来表示十进制数的编码,即用4位二进制来表示一位十进制数,因此4位二进制数表示最大的十进制数9(1001),只取十六个数中的十个数(有别于8421码)
    2021-09-09

最新评论