读书人

C++中参数的持续性作用域跟连接性

发布时间: 2012-09-07 10:38:15 作者: rapoo

C++中参数的持续性,作用域和连接性。

稍稍看了会C++ Primer,然后把书中讲这部分的内容精简下。

先给大家说下自动变量,这个是在函数中用的,我个人认为是比较多的一中变量。自动变量的修饰符是(auto),但一般情况下我们忽略它,它是在代码块中被创建,当代码块结束就消失的一种变量。它是存放在堆栈中,所以可想而知,当堆栈结束后,变量也不在了。

接下来讲下自动变量中的寄存器变量,上面说了,变量放在堆栈中,所以会消耗内存,而寄存器变量则解决了这个问题,它需要在自动变量声明前加上一个“register”,这样编辑器就会去使用寄存器来处理变量。但记住一点,由于寄存器上没有地址,所以,对寄存器变量不能使用取地址符号。

接下来说一下静态变量。这个是我个人感觉很头疼的一种变量。

首先,静态存储持续性有三种链接性,1.外部链接性,2.内部链接性,3.无连接性。

下面上一张表格,里面介绍了五种存储方式。

5种变量储存方式存储描述持续性作用域链接性如何声明自动自动代码块无在代码块中,(auto)寄存器自动代码块无在代码块中,用register静态,无连接性静态代码块无在代码块中,用static静态,外部链接性静态文件外部在函数外面静态,内部链接性静态文件内部在函数外面,使用关键字static

我先贴这些上来,相信大家也都能看懂些,时间不早了,先睡觉去,明天晚上下班后,接着补充,到时候给大家上几段代码,然后介绍下命名空间,其实也是一种作用域。嘿嘿,先挖个坑在这,明天来填坑,啊不对。。12点了,是今天晚上。。。

继续更新,接下来贴一段静态修饰的,外部链接性的例子

#include <iostream>using namespace std;void other();namespace n1{int x = 1;}namespace n2{int x = 2;}int main(){using namespace n1;cout << x << endl;// 1{int x = 4;cout << x << ", " << n1::x << ", " << n2::x << endl;// 4, 1, 2}using n2::x;cout << x << endl;// 2other();return 0;}void other(){using namespace n2;cout << x << endl;// 2{int x = 4;cout << x << ", " << n1::x << ", " << n2::x << endl;// 4, 1, 2}using n2::x;cout << x << endl;// 2}
好了,先介绍到这,这周我开始看C++的类和对象的基本知识了,开始复习面向对象的技术了。等周末我继续更新博客。好晚。。写着写着差点睡着。。。

1楼han_yankun2009昨天 08:35
学习了
Re: Paul_wuhaha昨天 08:37
回复han_yankun2009n我还没写完,今天晚上继续补充,对这方面的知识我也是摘取了一些书上的内容,晚上我会贴几段代码,到时候运行下,就理解深了。

读书人网 >C++

热点推荐