广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >EasyC++内部链接性和无链接性
  • 795
分享到

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

2024-04-02 19:04:59 795人浏览 安东尼
摘要

目录1.内部链接性2.无链接性文章转自微信公众号:Coder梁(ID:Coder_LT) 1.内部链接性 当我们使用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++内部链接性和无链接性内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: EasyC++内部链接性和无链接性

本文链接: https://www.lsjlt.com/news/160133.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-04-28
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-04-28
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-04-28
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-04-28
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-04-28
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-04-28
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-04-28
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-04-28
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-04-28
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-04-28
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作