一篇文章带你了解C++ static的作用,全局变量和局部变量的区别

yizhihongxing

这里是详细讲解“一篇文章带你了解C++ static的作用,全局变量和局部变量的区别”的完整攻略。

1. 介绍

首先我们需要理解C++中的静态变量和全局变量以及它们与局部变量的区别。在程序开发中,正确地使用这些变量是很重要的。

  1. 全局变量:定义在函数外部,可以被程序中的所有函数使用。
  2. 静态局部变量:生存期是整个程序,但作用域是局部的。只在第一次进入该函数时初始化一次,以后函数再被调用,不再初始化。
  3. 普通局部变量:定义在函数内部的变量,作用域只在该函数内。

在C++中,static关键字可以用于静态变量、静态函数和静态成员变量。下面将重点介绍static关键字在变量声明中的用法和意义。

2. 静态变量

静态变量是指在函数中声明的变量,使用static关键字,具有以下特点:

  1. 它的生命周期与程序一致,只有在进程结束时该变量才会被销毁。
  2. 它只会被初始化一次,即使函数被多次调用,静态变量的值也不会丢失。
  3. 它的作用域只存在于声明它的函数内部。

以下是一个示例,展示了静态变量的用法:

#include <iostream>

void demo()
{
    static int j = 0; // 静态局部变量
    int i = 0; // 普通局部变量

    j++;
    i++;

    std::cout << "静态局部变量j的值为: " << j << std::endl;
    std::cout << "普通局部变量i的值为: " << i << std::endl;
}

int main()
{
    std::cout << "第一次调用函数demo:" << std::endl;
    demo();
    std::cout << "第二次调用函数demo:" << std::endl;
    demo();
    return 0;
}

输出:

第一次调用函数demo:
静态局部变量j的值为: 1
普通局部变量i的值为: 1
第二次调用函数demo:
静态局部变量j的值为: 2
普通局部变量i的值为: 1

可以看到,静态变量j只被初始化一次,每次调用函数demo时j的值都被保存了下来;而i的值在每次函数调用结束时都会被清除。

3. 全局变量

全局变量的生命周期从程序开始一直到程序结束,所有函数中都可以访问它们,但如果某个函数中有与全局变量同名的局部变量时,局部变量将会屏蔽全局变量,此时只能访问到局部变量。

以下是一个示例,展示了全局变量的用法:

#include <iostream>

int global_variable1 = 1; //全局变量

void demo(){
    int global_variable1 = 2; //局部变量,屏蔽了全局变量global_variable1
    int global_variable2 = 3; //局部变量,与全局变量global_variable2没有关系

    std::cout << "全局变量global_variable1的值为:" << ::global_variable1 << std::endl;
    std::cout << "局部变量global_variable1的值为:" << global_variable1 << std::endl;
    std::cout << "局部变量global_variable2的值为:" << global_variable2 << std::endl;
}

int global_variable2 = 4; //全局变量

int main(){
    demo();
    std::cout << "全局变量global_variable2的值为:" << global_variable2 << std::endl;
    return 0;
}

输出:

全局变量global_variable1的值为:1
局部变量global_variable1的值为:2
局部变量global_variable2的值为:3
全局变量global_variable2的值为:4

4. 总结

该攻略主要介绍了静态变量和全局变量的概念、用法和特点。在程序设计中,根据需求合理地使用这两种变量,可以提高程序的效率和灵活性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你了解C++ static的作用,全局变量和局部变量的区别 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 深入解析C语言中的内存分配相关问题

    深入解析C语言中的内存分配相关问题 概述 在C语言中,内存分配是至关重要的。这是因为在C语言中,程序员需要手动地分配和释放内存以存储数据。C语言提供了几种内存分配方式,包括数据段、栈和堆。使用不当的内存分配方法可能导致程序运行时出现各种严重的问题,例如内存泄漏和段错误。本攻略将重点介绍C语言中的内存分配方式,并提供一些示例以帮助您更好地理解内存分配的概念。 …

    C 2023年5月23日
    00
  • 天天飞车C级赛车威酷属性解析 天天飞车威酷怎么样

    天天飞车C级赛车威酷属性解析 背景介绍 天天飞车是一款流行的赛车竞速游戏,近年来越来越受欢迎。C级赛车威酷作为其中的一种赛车,有着很好的属性表现。本文将详细讲解C级赛车威酷的属性和使用技巧,帮助玩家更好地体验游戏。 属性解析 速度 C级赛车威酷的速度属性为50,算不上顶尖,但也不差。玩家在使用该车时应该注重提高赛车的加速度,以把车开到最高速度。 操控 C级赛…

    C 2023年5月23日
    00
  • 联想拯救者笔记本开机蓝屏代码0xc000000d怎么办?

    “联想拯救者笔记本开机蓝屏代码0xc000000d”是一种常见的Windows操作系统蓝屏错误。这通常在连接USB驱动器或进行系统文件更改时发生。以下是解决此问题的完整攻略: 步骤一:重启电脑 第一步是重新启动您的电脑。有时,Windows操作系统遇到临时错误会导致蓝屏并且重启可以解决这个问题。这是一个非常简单的过程,只需点击“开始”菜单,然后点击“重新启动…

    C 2023年5月23日
    00
  • Matlab 2018a怎么安装?Matlab R2018a官方激活安装详细教程(附下载)

    下面我给您详细讲解“Matlab 2018a怎么安装?Matlab R2018a官方激活安装详细教程(附下载)”的完整攻略。 Matlab 2018a安装步骤: 首先,进入MathWorks官网,找到Matlab 2018a的下载页面,下载相应的安装程序 下载完成后,双击安装程序,出现安装窗口。选择“安装Matlab”,然后点击“下一步”。 阅读许可协议,并…

    C 2023年5月22日
    00
  • 在word2013文档中插入公式后行距不等怎么办(三种解决方法)

    针对“在word2013文档中插入公式后行距不等怎么办(三种解决方法)”这个问题,以下是三种解决方法的完整攻略: 方法一:手动调整行距 插入公式后,如果发现行距出现了不等的情况,可以通过手动调整行距来解决。 步骤如下: 选中公式后面的段落,右键点击“段落”; 进入“段落对话框”,在“间距”选项卡下,将“段前”和“段后”的值设为0; 在“行距”选项卡下,将“行…

    C 2023年5月23日
    00
  • C语言详细分析宏定义的使用

    C语言详细分析宏定义的使用 宏定义是C语言中的一个非常重要的特性,可以用来定义一些常量、函数名称、条件编译和代码模板等。本文将详细分析宏定义的使用方法,包括宏定义的类型、作用域、参数、注意事项以及常用的示例说明。 宏定义的类型 C语言中定义宏有两种方式: #define #define是最常用的宏定义方式,它可以在文件的任何地方定义。#define后面跟随一…

    C 2023年5月23日
    00
  • C语言字符串函数介绍与模拟实现详解

    C语言字符串函数介绍与模拟实现详解 简介 C语言中的字符串是以字符数组的形式保存的,而字符串函数则是对这些字符数组执行一些常见的字符串操作的函数库。本文将介绍常见的C语言字符串函数,并演示如何模拟实现这些函数。 常见字符串函数 strlen() strlen()函数用于返回字符串的长度,即其包含的字符个数,不包括字符串末尾的’\0’。 示例: #includ…

    C 2023年5月23日
    00
  • 逍遥自在学C语言 | 第一个C语言程序 九层之台起于垒土

    一、人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 二、C语言简介 C语言是一种高级语言,运行效率仅次于汇编,支持跨平台 C语言是学习其他高级语言的基础,如C++、Java和Python 三、编程环境 1、在线编译 百度搜索C语言在线编译,会发现有很多在线编译工具 这里以菜鸟工…

    C语言 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部