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

编译无法通过

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

 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

写的很好

原文链接: https://www.cnblogs.com/LIN-JW/p/12659559.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/340679

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午12:43
下一篇 2023年3月2日 上午12:43

相关推荐