EasyC++内部链接性和无链接性
目录
- 1.内部链接性
- 2.无链接性
文章转自微信公众号: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++有个最大的特点,那便是编译型语言,相比于Python这种解释型语言,C++在编译阶段就进行了许多处理,在执行阶段便具有高效性,本篇主要讲解C++中的编译与链接: 一.编译与链接模型 1.一开始的C++是一个简单的加工模型,如下图所示: 这样会存在一些问题: 无法处理大型程序 加工耗时较长 即使少量修改,也需要全部重新加工 2.为了解决以上问题,引入了分块处理的方式: 编译链接模型的好处: 编译耗资源但一次处理输入较少 链接输
-
EasyC++内部链接性和无链接性
目录 1.内部链接性 2.无链接性 文章转自微信公众号:Coder梁(ID:Coder_LT) 1.内部链接性 当我们使用static关键字,将变量的作用于限制在整个文件时,该变量的链接性为内部链接性.在多文件的程序当中,内部链接性和外部链接性是有所差别的,内部链接性的变量只能在当前文件使用,而常规外部变量是可以跨文件使用的. 但这就带来了一个问题,如果我们在两个文件当中都定义了同一个全局变量,会发生什么呢? // file1 int error = 20; // file2 int error
-
js实现一个链接打开两个链接地址的方法
本文实例讲述了js实现一个链接打开两个链接地址的方法.分享给大家供大家参考.具体如下: <script type="text/javascript"> <!-- function adClick(ad, site) { window.open(ad); window.location = site; } --> </script> <a href="javascript:adClick('http://www.163.com/','h
-
mysql安装navicat之后,出现2059,Authentication plugin及本地链接虚拟机docker,远程链接服务器
序言 在安装完MySql和navicat之后,进行连接时报出了ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: ÕÒ²»µ½Ö¸¶¨µÄÄ£¿é¡£.我起初认为是我没设置密码的原因.便在命令行模式下设置了密码值得一提的是在登陆root之后 设置密码应该是 set password ='你的密码' 而不是 什么password =password 什么的,你看见让报错是syntax
-
MySQL 查看链接及杀掉异常链接的方法
前言: 在数据库运维过程中,我们时常会关注数据库的链接情况,比如总共有多少链接.有多少活跃链接.有没有执行时间过长的链接等.数据库的各种异常也能通过链接情况间接反应出来,特别是数据库出现死锁或严重卡顿的时候,我们首先应该查看数据库是否有异常链接,并杀掉这些异常链接.本篇文章将主要介绍如何查看数据库链接及如何杀掉异常链接的方法. 1.查看数据库链接 查看数据库链接最常用的语句就是 show processlist 了,这条语句可以查看数据库中存在的线程状态.普通用户只可以查看当前用户发起的链接,具
-
Android webview加载https链接错误或无响应的解决
最近做无线WiFi的时候,在最后认证成功的时候会弹出一个广告页,于是用webview去加载了一下,结果没反应,打印url出来看了一下,发现是https格式的,在使用WebView加载https资源文件时,如果认证证书不被Android认可,那么会出现无法成功加载对应资源问题.那么,我们就要针对这一状况作出对应的处理. 于是百度了一下,这里记录一下,给大家做个参考: 1.设置WebView接受所有网站的证书 在认证证书不被Android所接受的情况下,我们可以通过设置重写WebViewClient
-
链接图片无缝(无间断)向左平滑滚动Js版代码
向左无缝滚动 body,html,div,a{ margin:0; padding:0} #demo { background: #FFF; overflow:hidden; border: 1px dashed #CCC; width: 500px; } #demo img { border: 3px solid #F2F2F2; } #indemo { float: left; width: 800%; } #demo1 { float: left; } #demo2 { float: le
-
jquery地址栏链接与a标签链接匹配之特效代码总结
如题所述,当出现这样的功能,点击某个链接后,给跳转后的该链接地址添加样式,通过添加class为current来增加特殊样式. 如图所示:点击HTML+css3跳转后,给其添加如图样式: js代码如下: var currUrl = window.location.href; var currStyle = function (links){ links.each(function(){ var url = $(this).attr('href'); if (currUrl.indexOf(url)
-
深度解析C语言中的变量作用域、链接和存储期的含义
在c中变量有三种性质: 1.存储期限:变量的存储期限决定了变量占用的内存空间什么时候会被释放,具有动态存储期限的变量会在所属的程序块被执行时获得内存空间,在结束时释放内存空间.具有静态存储期限的变量在程序运行的整个期间都会占用内存空间. 2.作用域:变量有块作用域也有文件作用域,结合序章第一张图可以明白块作用域是在某些程序块内起作用,文件作用域是在整个c文件之内起作用. 3.链接:链接是各个文件之间的关系,具有内部链接的变量只在本文件内起作用,具有外部链接的变量可以在不同文件内起作用.具有无链接
-
C++存储链接性原理详解
目录 链接性 外部链接性 单定义规则 内部链接性 无链接性 总结 链接性 链接性是指名称在不同文件之间能否共享,而作用域是指名称在文件内部哪些范围可见. 这里的文件并非开发时创建的文件,而是将文件的 include 内容全部递归包含进来之后,形成的大文件. 这一点也是与Go等一些语言不同.在Go语言中,文件是按包(package)组织,所有依赖的包都需要直接或间接import进来.也就是从main开始递归import得到的就是我们依赖的所有文件. 但C++不同.C++源文件主要分.h 和 .cp
-
百度内部邮件曝光 李彦宏呼唤狼性 淘汰小资
11月7日消息,近日,百度公司创始人.董事长兼首席执行官李彦宏在百度内部网上发了一封以"改变,从你我开始"的公开信流传开来.李彦宏在邮件中要求"鼓励狼性.淘汰小资",并倡导willing to disrupt ourselves(愿意改变自己,通俗地讲是革自己的命). 李彦宏在邮件中表示,过去几年百度虽然掺了很多钱,但投入不够,当公司业务还在快速成长时,不应该快速追求净利润,应该把更多的钱投入到更多的新业务和创新上. 李彦宏还称,除了核心业务之外,还应该通过推出浏览
随机推荐
- ASP.NET抓取网页内容的实现方法
- java 中 zookeeper简单使用
- java中数组的应用及方法
- JavaWeb中导出excel文件的简单方法
- smarty循环嵌套用法示例分析
- SqlServer存储过程实现及拼接sql的注意点
- JavaScript实现选中文字提示新浪微博分享效果
- JavaScript判断密码强度(自写代码)
- oledb连接access数据库示例
- c语言swap(a,b)值交换的4种实现方法
- MAC地址与IP地址绑定策略的破解
- SpringBoot文件上传控制及Java 获取和判断文件头信息
- VSCode中如何利用d.ts文件进行js智能提示
- Android开发获取当前系统日期和时间功能示例
- python爬虫 基于requests模块的get请求实现详解
- 解决laravel(5.5)访问public报错的问题
- node使用Mongoose类库实现简单的增删改查
- Nginx实现动静分离的示例代码
- 浅谈python的elementtree模块处理中文注意事项
- python使用pymongo与MongoDB基本交互操作示例