
C++
C 和 C++ 中的 static 和 extern 全局变量
在 C 和 C++ 中,全局变量是在函数之外定义的变量,可以在整个程序中访问。然而,全局变量的作用域和可见性取决于其声明方式。在本文中,我们将重点讨论 static 和 extern 关键字在全局变量中的应用。static 全局变量在 C 和 C++ 中,使用 static 关键字声明的全局变量具有静态存储期和内部链接。静态存储期意味着该变量在程序的整个生命周期内都存在,不会随着函数的调用而创建或销毁。内部链接意味着该变量只能在声明它的源文件中访问,其他源文件无法直接访问该变量。下面是一个示例代码,演示了在 C 中如何使用 static 关键字声明全局变量:c#include <stdio.h>static int count = 0;void increment() { count++;}int mAIn() { increment(); increment(); printf("Count: %d\n", count); return 0;}在上面的代码中,我们声明了一个 static 全局变量 count,并在 increment 函数中对其进行递增操作。由于 count 是一个全局变量,它在整个程序中都可以访问。运行上述代码,输出将是 Count: 2。extern 全局变量与 static 关键字相反,extern 关键字用于声明具有外部链接的全局变量。外部链接意味着该变量可以在其他源文件中访问,只要在使用它之前声明它即可。下面是一个示例代码,演示了在 C++ 中如何使用 extern 关键字声明全局变量:cpp#include <IOStream>extern int number;void printNumber() { std::cout << "Number: " << number << std::endl;</p>}int mAIn() { number = 5; printNumber(); return 0;}在上面的代码中,我们声明了一个 extern 全局变量 number,并在 printNumber 函数中打印该变量的值。然后,在 mAIn 函数中给 number 赋值为 5。由于 number 是一个具有外部链接的全局变量,它可以在 printNumber 函数中被访问到。运行上述代码,输出将是 Number: 5。通过使用 static 和 extern 关键字,我们可以在 C 和 C++ 中灵活地控制全局变量的作用域和可见性。static 全局变量具有静态存储期和内部链接,只能在声明它的源文件中访问。而 extern 全局变量具有外部链接,可以在其他源文件中访问。这些关键字为我们提供了更多的控制全局变量的方式,以满足程序的需求。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号