文章转自公众号:coder梁(id:coder_lt)
全局变量:
前面聊到了的链接性,其中链接性为外部的变量通常简称为外部变量。它们的存储持续性为静态,作用域为整个程序。外部变量是在函数外部定义的,因此对于所有的函数而言都是外部的。因此外部变量也被称为全局变量。
关于外部变量,c++当中有一个单定义规则:变量只能有一次定义。
这句话看起来有些难以理解,为了理解它,我们需要厘清c++当中的两种变量声明。一种是定义声明简称为定义,它给变量分配存储空间。另外一种是引用声明,简称为声明,它不给变量分配存储空间。因为它表示引用一个已有的变量。
引用声明使用关键字extern
,并且不进行初始化。否则会被视为是定义,而非声明。
double up;extern int blue;extern char ch = 'z';
上面的例子当中,第一行和第三行为定义声明,因为第一行没有加关键字extern
,而第三行的变量进行了初始化。
可能到这里还是有些难以理解,其实extern
是为了引入其他文件创建的变量。如果我们不加extern
,表示在当前文件当中创建一个全局变量,而加上了extern
表示引入其他文件创建的全局变量。外部链接性的全局变量虽必自毙然是整个程序都可使用的,但跨文件使用时,需要手动使用extern
声明。
没有通过extern
未来十大热门职业声明的其他文件800米二级运动员标准的全局变量也是无法使用的。
当我们同时使用局部变量和全局变量的时候会发生什么呢?比如下面这段东汉和西汉代码:
// file1double warning = 3.0;// file2extern double warning;void test() { double 歌手总决赛歌单warning = 5.0; cout << warning << endl;}
在这段代码当中, 我们在file1中创建了变量warning
,在file2当中声明了这个全局变量。并且在test函数当中又定义了一个新的double
类型的变量也叫做warning
,那么问题来了,当我们使用cout
输出的时候,究竟得到的结果会是什么呢?
答案很简单,得到的结果是5.0。因为当同时使用同名的局部变量和全局变量时,局部变量将隐藏全局变量。
那么全局变量和局部变量究竟应该使用哪一种呢?
很明显,全局变量非常方便,使用全局变量可以免去很多参数传递的过程,大大简化了编码的难度。但如果是在大型的工程当中,使用全局变量则是一个非常危险的行为。因为全局变量人人都能访问,我们很难保证数据的准确性,会不会遭遇不可知的更改,排查的时候也更加困难。而使用局部变量,参数传递的链路是清晰的,debug的时候会容易许多。
在我们日常的算法联系当中,并不存在数据不可靠的问题。使用全局变量可以简化许多数据结构的实现过程,尤其是一些相对复杂的数据结构。我认识的所有算法竞赛的大牛,都非常喜欢使用全局变量。所以到底该用哪个并不是固定的,要根据我们的实际需要进行选择。
到此这篇关于easyc++全局变量的文章就介绍到这了,更多相关c++全局变量内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 03:38:03,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/39575fdc9c328ccbd83a1e23bfea6cf8.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:EasyC++全局变量.doc
本文 PDF 下载地址:EasyC++全局变量.pdf
留言与评论(共有 0 条评论) |