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

这里是详细讲解“一篇文章带你了解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++实现教务管理系统攻略 1. 简介 教务管理系统是学校行政管理的重要组成部分,方便教务管理人员进行课程管理、考试管理、成绩管理、学籍管理等工作。C++作为一种高级编程语言,具有良好的可移植性、强大的数据处理能力和较高的运行效率,适合用于教务管理系统的开发。 本文将介绍如何使用C++编程语言实现教务管理系统的开发,包括如何进行需求分析、系统设计、数据结构选…

    C 2023年5月23日
    00
  • 01-C语言概述

    C语言概述 1.什么是C语言 C语言就是人和计算机交流的一种语言语言是用来交流沟通的。有一方说,有另一方听,必须有两方参与,这是语言最重要的功能: 说的一方传递信息,听的一方接收信息; 说的一方下达指令,听的一方遵循命令做事情。 语言是人和人交流,C语言是人和机器交流。只是,人可以不听另外一个人,但是,计算机是无条件服从。语言有独特的语法规则和定义,双方必须…

    C语言 2023年4月18日
    00
  • 使用C语言打印月历

    使用C语言打印月历需要进行如下步骤: 第一步:确定需求 我们需要编写一个程序,根据用户输入的年份和月份,输出该月份的日历。用户输入的年份和月份需要通过命令行参数传递。 第二步:分析问题 要输出一个月份的日历,我们需要知道这个月有多少天,以及从哪一天开始。根据该月第一天是星期几,我们可以推算出每天在日历中的位置。因此,我们需要解决以下问题: 根据年份和月份计算…

    C 2023年5月23日
    00
  • PHP高精确度运算BC函数库实例详解

    PHP高精确度运算BC函数库实例详解 本文将详细讲解PHP中高精度运算的实现方式,主要使用的是BC函数库。BC函数库是PHP中一个集成了多种精度运算的工具,拥有高精度计算、小数位控制等功能,可以帮助我们方便地完成高精度计算。 安装和使用 安装BC函数库非常简单,只需要在PHP中开启bcmath扩展即可。具体安装方式可以参考官方文档。 在开启扩展后,我们就可以…

    C 2023年5月22日
    00
  • BYC币怎么样?BYC/币缘币还值得投资吗

    BYC币的基本概念 BYC币,全名为币缘币(Bytecoin),是一种匿名、去中心化、开源的数字货币。它于2012年创立,是第一代公开发行的隐私币之一。相比于比特币,BYC币主张保护交易者的隐私,并提供更快的交易确认速度和更低的交易费用。 BYC币的投资价值分析 优点 高度保护隐私:BYC币使用了加密技术和混淆账户的方法,可以有效保护交易者的个人隐私。 去中…

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

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

    C 2023年5月23日
    00
  • 基于Matlab实现数字音频分析处理系统

    基于Matlab实现数字音频分析处理系统攻略 目录 背景简介 实现步骤 示例说明1:音频文件的读取和播放 示例说明2:音频信号的时域和频域分析 背景简介 数字音频处理是数字信号处理领域的一个重要方向,它主要涉及到音频信号的获取、存储、处理和播放等方面。为了更好地完成数字音频处理任务,基于Matlab的数字音频分析处理系统应运而生。该系统不仅可以实现音频文件的…

    C 2023年5月23日
    00
  • C++简单QQ程序服务器端的实现代码

    下面我将为你详细讲解如何实现“C++简单QQ程序服务器端的实现代码”。 一、需求分析 在开始编写程序之前,我们需要先进行需求分析,明确程序的功能和实现方式。根据题目描述,我们需要实现一个C++简单QQ程序服务器端的实现代码,其主要功能包括: 用户可以注册账号并登录; 用户可以添加好友,删除好友,查询好友列表; 用户可以发送消息给好友; 用户可以查看收到的消息…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部