C/C++ extern和static的使用详解

C/C++ extern和static的使用详解

extern关键字的使用

  • 定义
    extern是C/C++中的关键字之一,表示当前变量或函数是在其他文件中定义的,需要在该文件中使用。也就是说,extern声明的变量或函数已经在其他文件中定义,当前文件只是需要使用它而已。
  • 示例
    例如,在A.c文件中定义了变量x,而在B.c文件中需要使用变量x,可以在B.c文件中添加extern声明语句,示例代码如下:

    ```
    // A.c文件
    int x = 10;

    // B.c文件
    extern int x; // 在B.c文件中添加extern声明语句
    int main()
    {
    printf("%d\n", x);
    return 0;
    }
    ```

此时编译B.c文件,就会在链接时将A.c文件中定义的x变量链接进来,并打印出正确的结果10。

static关键字的使用

  • 定义
    static是C/C++中的关键字之一,表示当前变量或函数的作用域局限于本文件,不能被其他文件访问。也就是说,static定义的变量或函数只有在当前文件中可以使用。
  • 示例
    例如,在A.c文件中定义了一个静态变量x,并在A.c文件的两个函数中使用,示例代码如下:

    ```
    // A.c文件

    include

    static int x = 10;
    void Func1()
    {
    printf("Func1 x = %d\n", x);
    }
    void Func2()
    {
    printf("Func2 x = %d\n", x);
    }
    int main()
    {
    Func1();
    Func2();
    return 0;
    }
    ```

函数Func1和Func2中都使用了静态变量x,此时编译A.c文件,就会在链接时把x变量链接到A.c文件中,而不会被其他文件访问到。

总结

  • extern和static都是用来控制变量或函数的作用域的关键字。
  • extern常用于不同文件之间共享变量或函数。
  • static常用于限制变量或函数的作用域仅在本文件中。

以上是关于C/C++中extern和static关键字的详细介绍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C/C++ extern和static的使用详解 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • connectby用法

    connectby用法 connectby是Oracle数据库的一个非常有用的函数,用于查询树形结构数据并返回它们的层级关系。这个函数可以很方便地把一颗树形结构的数据转换成平面化的表格数据。 使用connectby函数时,需要指定一个起始节点(connect by <column> = <value>),然后通过prior关键字指定它…

    其他 2023年3月28日
    00
  • 基于C++编写一个文章生成器

    基于C++编写一个文章生成器攻略 文章生成器是一个能够自动生成文章内容的程序。在这个攻略中,我们将使用C++编写一个简单的文章生成器。下面是实现这个过程的详细步骤: 步骤一:准备工作 安装C++编译器:首先,确保你的计算机上已经安装了C++编译器,比如GCC或者Clang。 创建一个新的C++项目:在你的开发环境中创建一个新的C++项目,比如使用命令行或者I…

    other 2023年8月6日
    00
  • winebottlerformac(mac运行exe程序工具)安装

    以下是关于“WineBottler for Mac安装”的完整攻略,包括WineBottler的基本知识、安装步骤和两个示例等。 WineBottler的基本知识 WineBottler是一款Mac上的应用程序,它可以让你在Mac上运行Windows应用程序。它使用Wine技术来实现这一功能,Wine是一种允许在Unix-like操作系统上运行Windows…

    other 2023年5月7日
    00
  • Bandizip如何更改右键菜单选项 Bandizip更改右键菜单选项方法

    Bandizip如何更改右键菜单选项? Bandizip是一款优秀的文件压缩和解压缩工具,它可以帮助用户快速完成压缩、解压、加密等操作。默认情况下,Bandizip在Windows系统中的右键菜单中只提供了基本的压缩选项。但是,通过简单的设置,我们可以在右键菜单中添加更多有用的选项,进一步提升Bandizip的实用性。 Bandizip更改右键菜单选项的方法…

    other 2023年6月27日
    00
  • 通过spring注解开发,简单测试单例和多例区别

    当然!下面是关于\”通过Spring注解开发,简单测试单例和多例区别\”的完整攻略,包含两个示例说明。 … … … … … … … … … … … … … … … … … … … … … … … … … … …

    other 2023年8月20日
    00
  • JavaScript容错例外处理

    JavaScript容错例外处理攻略 在JavaScript中,容错例外处理是一种重要的编程技术,用于处理可能出现的错误和异常情况。通过合理的容错处理,我们可以使程序更加健壮和可靠。下面是一个详细的攻略,介绍了如何在JavaScript中进行容错例外处理。 1. 使用try-catch语句块 try-catch语句块是JavaScript中最常用的容错例外处…

    other 2023年7月28日
    00
  • win8怎么查看IP地址(命令行法/本地网络法)

    当你使用Windows 8操作系统时,你可以使用命令行法或本地网络法来查看IP地址。下面是详细的攻略: 命令行法 打开命令提示符:点击开始菜单,然后在搜索栏中输入\”cmd\”,点击打开\”命令提示符\”应用程序。 输入命令:在命令提示符窗口中,输入以下命令并按下回车键: ipconfig 这个命令将显示你的网络连接的详细信息,包括IP地址。 查看IP地址:…

    other 2023年7月30日
    00
  • 图文详解Linux服务器搭建JDK环境

    图文详解Linux服务器搭建JDK环境 在Linux服务器上搭建Java Development Kit (JDK)环境是开发Java应用程序的必要步骤。下面是在Ubuntu Linux操作系统上完整地搭建JDK环境的攻略。 步骤1:安装Java软件包管理器 在Ubuntu系统上,Java软件包管理器(PPA)可以帮助我们方便地安装和管理JDK。首先,我们需…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部