首页 > 编程语言 >C++static 存储类

C++static 存储类

时间:2024-03-01 14:56:16浏览次数:14  
标签:count 10 存储 变量 C++ static func

 1 #include <iostream>
 2  
 3 // 函数声明 
 4 void func(void);
 5  
 6 int main()
 7 {
 8     int count=10;
 9     while(count--)
10     {
11        func();
12        std::cout << ",变量 count 为 " << count << std::endl;
13     }
14     return 0;
15 }
16 
17 void func()
18 {
19     static int i = 5; // 局部静态变量
20     std::cout << "变量 i 为 " << i++ ;
21 }

输出为

变量 i 为 5,变量 count 为 9
变量 i 为 6,变量 count 为 8
变量 i 为 7,变量 count 为 7
变量 i 为 8,变量 count 为 6
变量 i 为 9,变量 count 为 5
变量 i 为 10,变量 count 为 4
变量 i 为 11,变量 count 为 3
变量 i 为 12,变量 count 为 2
变量 i 为 13,变量 count 为 1
变量 i 为 14,变量 count 为 0

一开始还以为每次执行func输出 i 的值都为 5 

static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。

static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。

在 C++ 中,当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。

标签:count,10,存储,变量,C++,static,func
From: https://www.cnblogs.com/uacs2024/p/18047062

相关文章

  • (持续更新)c++指针
    空指针和野指针1.空指针定义:指针变量指向内存中编号为0的空间用途:初始化指针变量注意:空指针指向的内存是不可以访问的   2.野指针   const修饰指针1.const修饰指针constint*p=&a;图中:*p=20;错误,指针指向的值不可以改p=&b;正确,指针的指向可以改 (常量......
  • faster-fifo:C++实现的python多进程通信队列 —— 强化学习ppo算法库sample-factory的C
    项目地址:https://github.com/alex-petrenko/faster-fifo需要注意,该项目给出了两种安装方法,一种是pip从pypi官网安装,一种是从GitHub上的源码安装;经过测试发现这个项目维护程度较差,因此pypi官网上的项目比较落后,因此不建议使用pypi上的安装,而是进行源码编译安装。给出源码编......
  • SQL Server存储过程
    SQLServer中视图通过简单的SELECT查询来解决复杂的查询,但是视图不能提供业务逻辑功能,而存储过程可以办到这点。什么是存储过程?存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程中可......
  • dbus-c++/dbus.h:没有那个文件或目录
    dbus-c++/dbus.h:没有那个文件或目录作者:Linux服务器开发栏目:公开2023-10-2612:38160如果你在使用dbus-c++时遇到了”dbus.h:没有那个文件或目录”的错误,这可能是因为你的编译环境缺少DBus开发库。要解决这个问题,你需要安装DBus开发库。根据你所用的操作系统不同,具体步骤可......
  • 【C++】【OpenCV-4.9.0】播放视频
    相较于之前的Python下的opencv读取视频流并展示,C++下有一些不同需要配置1、opencv\build文件夹的bin文件夹下的opencv_videoio_ffmpeg490_64.dll需要拷贝至工程文件中,或者将bin路径写入环境变量也可。(如果没有这个dll文件的话,可能会出现一直读取视频失败,即使用isOpened()返回fals......
  • C++位运算函数总结
    __builtin超实用位运算函数总结①后导0(__builtin_ctz())#include<bits/stdc++.h>usingnamespacestd;intmain(){ cout<<__builtin_ctz(8)<<endl;//ans=3because8=0b1000 return0;}②前导0(__builtin_clz())#include<bits/stdc++.h&g......
  • 【C++】Mat和Pat希望邀请他们的朋友来参加派对。他们要编写一个程序完成下面的任务。
    Mat和Pat希望邀请他们的朋友来参加派对。他们要编写一个程序完成下面的任务。让Mat输入他朋友的姓名列表。姓名存储在一个容器中,然后按排列后的顺序显示出来。让Pat输入她朋友的姓名列表。姓名存储在另一个容器中,然后按排列后的顺序显示出来。创建第三个容器,将两个列表合并,删除重......
  • 【C++】相对于数组,在链表中添加和删除元素更容易,但排序速度更慢。这就引出了一种可能
    相对于数组,在链表中添加和删除元素更容易,但排序速度更慢。这就引出了一种可能性:相对于使用链表算法进行排序,将链表复制到数组中,对数组进行排序,再将排序后的结果复制到链表中的速度可能更快;但这也可能占用更多的内存。请使用如下方法检验上述假设。a.创建大型vector<int>对象vi0,并......
  • nas存储
    参考文档:文件存储NAS一、nas是什么NAS全称为NetworkAttachedStorage(网络附属存储),简单理解就是专门用来存储数据、且可以连接网络的一种存储设备。NAS主要特点是将存储与服务器相分离,抛开传统服务器运行带宽压力,集中做数据管理部分,从而实现低成本、高效率的数据存储。它是一种......
  • 8-1.存储点及画面效果
    制作一个可以点亮的存储点切图第一张是存储点的基座,第二张是存储点上面的文字将它们组合在一起就是存储点了让存储点可交互核心代码与宝箱的代码完全一致usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Rendering.U......