C++不同文件中相同变量的共享

使用extern实现变量共享

在此之前,先来看这样一行代码

//text1.h

//extern int bufsize;我这里先把头文件中的东西注释掉,方便比较不同。

//text2.cpp

#include"text1.h"

#include

using namespace std;

int fun()

{

int bufsize = 44;//注意这里重新定义了bufsize

cout << bufsize;

return 0;

}

//text1.cpp

#include

#include"text1.h"

using namespace std;

int bufsize = 12;

void main()

{

int fun();

cout << fun();

cout << bufsize;

}

这里的结果非常明显,输出的是44012.

好,那么再来看下面的代码。

//text1.h

extern int bufsize;

//text2.cpp

#include"text1.h"

#include

using namespace std;

int fun()

{

int bufsize = 44;//注意这里

cout << bufsize;

return 0;

}

//text1.cpp

#include

#include"text1.h"

using namespace std;

int bufsize = 12;

void main()

{

int fun();

cout << fun();

cout << bufsize;

}

我关掉了头文件中的注释,结果是一样的,好吧,是一样的没错,看了作用域的可以无视上面的了。

再看下面的代码

//text1.h

extern int bufsize;

//text2.cpp

#include"text1.h"

#include

using namespace std;

int fun()

{

bufsize = 44;//注意这里,把int去了,就不是重新声明并定义了,而是给共享的bufsize赋值了。

cout << bufsize;

return 0;

}

//text1.cpp

#include

#include"text1.h"

using namespace std;

int bufsize = 12;

void main()

{

int fun();

cout << fun();

cout << bufsize;

}

结果当然是44044了,因为在主函数中先调用了fun函数,bufsize被重新赋值为44,然后返回一个0,因为bufsize实现共享,所以主函数中的bufsize变成了44了。

发布了302 篇原创文章 · 获赞 5 · 访问量 6845
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览