c++ 全局变量 静态全局变量


全局变量是静态存储方式, 静态全局变量也是静态存储方式,这两者在存储方式上并无不同。

区别:

虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,静态全局变量在各个源文件中都是有效的。

静态局部变量则限制了其作用域, 只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态局部变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

 

///a.h
#ifndef A_H_INCLUDE
#define A_H_INCLUDE

extern int a;
int b;

#endif // a_h_include

 

///a.cpp
int a = 10;

///main.cpp
#include <iostream>
#include "a.h"
using namespace std;

 

///main.cpp
#include <iostream>
#include "a.h"
using namespace std;

int main()
{
    cout << a;
    return 0;
}

编译成功,输出 10 

 

在a.cpp中,用static修饰a

编译无法通过

 undefined reference to `a'  -----> 未定义对“ a”的引用

 

可以看出被static修饰的全局变量,的作用域只在源文件的范围

而非静态全局变量,则可以整个源程序文件中使用

 推荐一篇博客:https://blog.csdn.net/qq_22238021/article/details/79533711?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

写的很好


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM