当前位置:首页 > 数码 > C-中的外部链接性与内部链接性-深入探索其差异和实际应用 (c++外部变量的使用)

C-中的外部链接性与内部链接性-深入探索其差异和实际应用 (c++外部变量的使用)

admin3个月前 (04-29)数码26

一、外部链接性概念解释

外部链接性指的是变量或函数可以在多个源文件之间共享和访问。具有外部链接性的变量或函数可以在不同的源文件中声明和定义,然后通过外部链接进行连接和使用。

关键字:在 C++ 中,使用关键字 extern 来声明具有外部链接性的变量或函数。

extern int num;
  

以上代码声明了一个具有外部链接性的整型变量 num

二、内部链接性概念解释

内部链接性指的是变量或函数仅在当前源文件中可见和访问。具有内部链接性的变量或函数只能在同一源文件中使用,无法在其他源文件中访问。

关键字:在 C++ 中,使用关键字 static 来声明具有内部链接性的变量或函数。

static int count;
  

以上代码声明了一个具有内部链接性的静态整型变量 count

三、外部链接性与内部链接性的区别

C
特征 外部链接性 内部链接性
可见性范围 可以在多个源文件中共享和访问 仅在当前源文件中可见
重复定义 可以在多个源文件中声明和定义 只能在同一源文件中声明和定义
存储方式 始终存在于程序运行期间 在程序启动时创建,程序结束时销毁

四、外部链接性和内部链接性的应用场景

外部链接性的应用

当多个源文件需要共享同一变量或函数时,可以使用外部链接性。

例如,在一个项目的不同源文件中使用同一全局变量,可以将其声明为具有外部链接性。

内部链接性的应用

当需要限制变量或函数的可见性,仅在当前源文件中使用时,可以使用内部链接性。

例如,在一个源文件中定义一个辅助函数,只供该文件内部使用,可以将其声明为具有内部链接性。

五、示例代码

// File1.cpp
extern int num;
static int count;

void foo() {
  num++; // 可以访问具有外部链接性的变量
  count++; // 可以访问具有内部链接性的变量
}

// File2.cpp
extern int num;
int main() {
  num++; // 可以在不同的源文件中访问具有外部链接性的变量
  // count++; // 无法在其他源文件中访问具有内部链接性的变量
  return 0;
}
  

在这个示例中, File1.cpp File2.cpp 是两个不同的源文件。

通过关键字 extern 声明的变量 num 具有外部链接性,可以在 File2.cpp 文件中访问。而通过关键字 static 声明的变量 count 具有内部链接性,只能在 File1.cpp 文件中访问。

六、总结

通过本文的介绍,我们了解了 C++ 中的外部链接性和内部链接性的概念、关键字以及它们之间的区别和应用场景。

外部链接性使得变量和函数可以在多个源文件中共享和访问,适用于需要在不同源文件中共享数据或功能的情况。而内部链接性则限制了变量和函数的可见性,仅在当前源文件中可见,适用于需要限制变量或函数的使用范围的情况。

正确理解和使用链接性对于编写模块化、可维护的 C++ 代码至关重要。通过合理选择外部链接性和内部链接性,我们可以在项目中提供良好的封装和抽象,避免全局变量的滥用,提高代码的可读性和可维护性。


c语言中的编辑,编译,连接,运行分别是什么意思

1、编辑:编写代码,制作C语言的源文件。

2、编译:是由编译程序将C语言源文件转换成二进制中间文件,对文件内部的语法语义做处理,如果编译出错,无法进行后续动作。

3、链接:将编译中生成的中间文件组合成二进制可执知行文件,这一步会对文件之间的关联做检查,如果出错,将不会生成可执行文件,也就无法执行。

4、执行:运行可执行文件,这一步道是编写代码的最终目的。

扩展资料:

DOS命令通常分为三类:内部命令、外部命令和批处理命令。

1、内部命令:

其包含在命令解释程序COMMAND.COM中,一旦启动DOS,这些命令就被调入内存,只要在DOS系统提示符下输入这些命令,就可立即执行。

2、外部命令:

其以文件的形式存储在系统盘上,所带扩展名为COM和EXE。DOS启动时,它们并没有被调入内存,执行前必须从系统盘读进内存。因此输入外部命令时,要了解该命令是否在当前盘上,不然DOS无法找到它们。

3、批处理命令:

实际上是个文件,该文件包含多条命令,当用户键入批处理文件名时,DOS将顺序执行其中的各条命令。注意,批处理命令必须用“.BAT”作为扩展名。

C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单。

当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。

参考资料:

网络百科-运行命令

网络百科-C语言

C语言里面"具有外部链接的静态变量"这里的"链接"是什么意思?

首先从静态变量说起. C语言里面静态变量有三种: 分别是外部链接性,内部链接性和无链接性.声明外部链接的变量的方法是在代码块外面声明它. 此变量是全局变量,多文件中亦可用.声明内部链接的变量的方法是在代码块外面声明它并加上static限定符. 此变量是全局变量,但仅在本文件中可用.声明无链接的变量的方法是在代码块里面声明它并加上static限定符. 此变量是局部变量,但仅在本代码块中可用.例:#include<...........>int global=1; //声明外部链接的变量static int global2//声明内部链接的变量int func(){int global=5;//声明的内部变量和全局变量重名,调用时将会隐藏全局的global;cout<<global; //是内部定义的global的值而不是外面的值.//如何引用外面的变量呢???cout<<::global; //可用作用域解析符(::)来说明你要输出的外面的全局变量 int global3; //声明无链接的变量}int main(){extern int alobal;//在本文件中此句可选.此句的意思为你需要引用外部的变量global;global=8;//直接引用全局变量.}望采纳!!!!

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: C

“C-中的外部链接性与内部链接性-深入探索其差异和实际应用 (c++外部变量的使用)” 的相关文章

编程实践-哈希负载均衡算法-IP-C (编程实践心得体会)

编程实践-哈希负载均衡算法-IP-C (编程实践心得体会)

Nginx 是一个高性能的开源 Web 服务器和反向代理服务器,因其高效处理高并发的请求而闻名。以下是一些 Nginx 用于处理高并发的主要特点和技术: 事件驱动架构: Nginx 使...

深化探求模板编程的精华-从类型参数到智能推导-模板的艺术-C-把握 (深化探求模板范文)

深化探求模板编程的精华-从类型参数到智能推导-模板的艺术-C-把握 (深化探求模板范文)

类型模板参数 在示例中,模板有一个模板参数:存储在网格中的类型。编写类模板时,您须要在尖括号内指定参数列表,例如: 这个参数列表相似于函数或方法中的参数列表。与函数和...

提升性能的新利器-17中的并行功能-C (提升 性能)

提升性能的新利器-17中的并行功能-C (提升 性能)

C++17扩展了STL(Standard Template Library,标准模板库)以支持并行算法。这意味着许多常见的算法,如std::sort、std::for_each、std::tran...

的区别-中-C-math.h-和-cmath (的区别中的钱)

的区别-中-C-math.h-和-cmath (的区别中的钱)

一、引言 C++规范库中的<cmath>和C言语规范库中的<math.h>均为数学函数库,它们提供了一系列数学函数和常量。但是,这两者之间存在一些关键的区别...

与设计形式-可裁减的代码-C-打造可保养 (设计与形式的关系)

与设计形式-可裁减的代码-C-打造可保养 (设计与形式的关系)

引言 C++是一种弱小的编程言语,它提供了许多工具和库以支持面向对象编程和通用编程。设计形式是一种用于处置特定疑问的经过验证的处置打算。C++的灵敏性和设计形式的广泛...

深入学习-C-掌握内存管理的艺术 (深入学习习总书记系列讲话精神)

深入学习-C-掌握内存管理的艺术 (深入学习习总书记系列讲话精神)

简介 内存管理是学习任何编程语言的必备知识,C++也不例外。C++ 是一门功能强大、底层控制能力强的编程语言,尤其适用于系统级开发、游戏开发和嵌入式系统等领域。与一些更简单的编程语言相比,学...

原理-成功链表-代码与解析-C (成功定律是什么)

原理-成功链表-代码与解析-C (成功定律是什么)

链表是一种经常出现的数据结构,它由一系列节点组成,每个节点蕴含数据和指向下一个节点的指针。与数组不同,链表不是延续的内存空间,而是经过指针链接在一同。上方咱们将深化讨论如何经常使用C++成功链表,...

span-span-经常出现避坑指南-danger-C-class=text (span是行内元素吗)

span-span-经常出现避坑指南-danger-C-class=text (span是行内元素吗)

空指针调用成员函数会crash?? 当调用一个空指针所指向的类的成员函数时,大少数人的反响都是程序会crash。空指针并不指向任何有效的内存地址,所以在调用成员函数时会尝试访问一个不存在的内...