当前位置: 首页 > news >正文

C++ static的使用方法及不同作用

在 C++ 里,static 是一个用途广泛的关键字,在不同场景下有不同含义,下面为你详细介绍:

1. 全局变量前的 static

static 用在全局变量前时,它会改变变量的链接属性。

  • 默认全局变量:默认的全局变量具有外部链接属性,这意味着在一个文件中定义的全局变量可以在其他文件中通过 extern 关键字声明后使用。
  • 静态全局变量:在全局变量前加上 static 关键字后,变量变为静态全局变量,具有内部链接属性,只能在定义它的文件中使用,其他文件无法访问。

示例代码

// file1.cpp
#include <iostream>// 静态全局变量
static int staticGlobalVar = 10; // 普通全局变量
int globalVar = 20; void printStaticGlobalVar() {std::cout << "Static global variable: " << staticGlobalVar << std::endl;
}// file2.cpp
#include <iostream>
// extern int staticGlobalVar; // 错误,无法在其他文件中访问静态全局变量
extern int globalVar;int main() {// std::cout << staticGlobalVar << std::endl; // 错误std::cout << "Global variable: " << globalVar << std::endl;return 0;
}

2. 局部变量前的 static

static 用于局部变量时,它会改变变量的存储方式和生命周期。

  • 普通局部变量:普通局部变量存储在栈上,在函数调用结束后会被销毁。
  • 静态局部变量:静态局部变量存储在全局数据区,只在第一次调用函数时初始化,之后再次调用函数时,静态局部变量会保留上一次调用结束时的值。

示例代码

#include <iostream>void staticLocalVariableExample() {static int staticLocalVar = 0; // 静态局部变量int normalLocalVar = 0; // 普通局部变量std::cout << "Static local variable: " << staticLocalVar << std::endl;std::cout << "Normal local variable: " << normalLocalVar << std::endl;staticLocalVar++;normalLocalVar++;
}int main() {staticLocalVariableExample();staticLocalVariableExample();return 0;
}

3. 函数前的 static

static 用于函数前时,它会改变函数的链接属性。

  • 默认全局函数:默认的全局函数具有外部链接属性,可以在其他文件中通过 extern 关键字声明后调用。
  • 静态函数:在函数前加上 static 关键字后,函数变为静态函数,具有内部链接属性,只能在定义它的文件中调用,其他文件无法访问。

示例代码

// file1.cpp
#include <iostream>// 静态函数
static void staticFunction() {std::cout << "This is a static function." << std::endl;
}// 普通函数
void normalFunction() {std::cout << "This is a normal function." << std::endl;
}// file2.cpp
#include <iostream>
// extern void staticFunction(); // 错误,无法在其他文件中调用静态函数
extern void normalFunction();int main() {// staticFunction(); // 错误normalFunction();return 0;
}

4. 类的静态成员变量

类的静态成员变量属于整个类,而不是类的某个对象,所有对象共享同一个静态成员变量。

  • 存储位置:静态成员变量存储在全局数据区,不随对象的创建和销毁而分配和释放内存。
  • 初始化:静态成员变量必须在类外进行初始化。

示例代码

#include <iostream>class MyClass {
public:static int staticMemberVar; // 类内声明静态成员变量int normalMemberVar;MyClass(int value) : normalMemberVar(value) {}
};// 类外初始化静态成员变量
int MyClass::staticMemberVar = 0; int main() {MyClass obj1(10);MyClass obj2(20);obj1.staticMemberVar = 30;std::cout << "obj2.staticMemberVar: " << obj2.staticMemberVar << std::endl; // 输出 30return 0;
}

5. 类的静态成员函数

类的静态成员函数属于整个类,而不是类的某个对象,可以直接通过类名调用,也可以通过对象调用。

  • this 指针:静态成员函数没有 this 指针,因此不能访问类的非静态成员变量和非静态成员函数,只能访问类的静态成员变量和静态成员函数。

示例代码

#include <iostream>class MyClass {
public:static int staticMemberVar;int normalMemberVar;static void staticMemberFunction() {staticMemberVar = 10; // 可以访问静态成员变量// normalMemberVar = 20; // 错误,不能访问非静态成员变量std::cout << "Static member function called. staticMemberVar: " << staticMemberVar << std::endl;}
};int MyClass::staticMemberVar = 0;int main() {MyClass::staticMemberFunction(); // 通过类名调用静态成员函数MyClass obj;obj.staticMemberFunction(); // 通过对象调用静态成员函数return 0;
}

综上所述,static 关键字在不同的位置有不同的含义,主要体现在改变变量和函数的链接属性、存储方式、生命周期以及实现类的共享成员等方面。

相关文章:

C++ static的使用方法及不同作用

在 C 里&#xff0c;static 是一个用途广泛的关键字&#xff0c;在不同场景下有不同含义&#xff0c;下面为你详细介绍&#xff1a; 1. 全局变量前的 static 当 static 用在全局变量前时&#xff0c;它会改变变量的链接属性。 默认全局变量&#xff1a;默认的全局变量具有外…...

CSS 美化页面(四)

一、浮动float属性 ‌属性值‌‌描述‌‌适用场景‌left元素向左浮动&#xff0c;腾出右侧空间供其他元素使用&#xff0c;其他内容会围绕在其右侧‌。横向排列元素&#xff08;如导航菜单&#xff09;、图文混排布局‌。right元素向右浮动&#xff0c;腾出左侧空间供其他元素使…...

驱动-原子操作

前面 对并发与竞争进行了实验&#xff0c; 两个 app 应用程序之间对共享资源的竞争访问引起了数据传输错误&#xff0c; 而在 Linux 内核中&#xff0c; 提供了四种处理并发与竞争的常见方法&#xff1a; 分别是原子操作、 自旋锁、 信号量、 互斥体&#xff0c; 这里了解下原子…...

Flutter ListView 详解

ListView 是 Flutter 中用于构建滚动列表的核心组件&#xff0c;支持垂直、水平滚动以及复杂的动态布局。本文将深入解析其核心用法、性能优化策略和高级功能实现&#xff0c;助你打造流畅高效的列表界面。 一、基础篇&#xff1a;快速构建各类列表 1. 垂直列表&#xff08;默…...

关于视频的一些算法内容,不包含代码等

视频算法&#xff1a; 视频降噪&#xff0c; 去除视频中的噪音&#xff0c;提高图像质量 工作原理&#xff1a; 时域降噪&#xff1a;利用相邻帧之间的相似性&#xff0c;通过平均或滤波来减少随机噪声。 空域降噪&#xff1a;在单帧内使用滤波器&#xff08;高斯滤波器&am…...

OpenCV 图形API(43)颜色空间转换-----将 BGR 图像转换为 LUV 色彩空间函数BGR2LUV()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将图像从BGR色彩空间转换为LUV色彩空间。 该函数将输入图像从BGR色彩空间转换为LUV。B、G和R通道值的传统范围是0到255。 输出图像必须是8位无符…...

keil报错 ..\..\Libraries\CMSIS\stm32f10x.h(298): error: #67: expected a “}“

报错原因&#xff1a; 通常是由于启动文件、头文件定义或驱动选择不一致导致的。以下是一些具体的解决方案&#xff0c;可以帮助你解决这个问题&#xff1a; 检查步骤&#xff1a; 1. 检查启动文件 确保你的启动文件与你的芯片型号相匹配。例如&#xff0c;如果你的芯片是S…...

图像预处理-添加水印

一.ROI切割 类似裁剪图片&#xff0c;但是原理是基于Numpy数组的切片操作(ROI数组切片是会修改原图数据的)&#xff0c;也就是说这个“裁剪”不是为了保存“裁剪”部分&#xff0c;而是为了方便修改等处理。 import cv2 as cv import numpy as npimg cv.imread(../images/dem…...

扩展欧几里得算法【Exgcd】的内容与题目应用

1.简介 exgcd的目的是表示出二元一次不定方程的通解。 形式化地&#xff0c;exgcd算法就是输入a&#xff0c;b&#xff0c;c的值&#xff0c;返回一组x&#xff0c;y&#xff0c;满足 a x b y c axbyc axbyc。 2.1方程无整数解的情况 当 c 不能被 a &#xff0c;b最小公倍…...

OpenCV day5

函数内容接上文&#xff1a;OpenCV day4-CSDN博客 目录 9.cv2.adaptiveThreshold(): 10.cv2.split()&#xff1a; 11.cv2.merge()&#xff1a; 12.cv2.add()&#xff1a; 13.cv2.subtract()&#xff1a; 14.cv2.multiply()&#xff1a; 15.cv2.divide()&#xff1a; 1…...

Spring DI 详解

学习过 IoC 后&#xff0c;就知道我们可以将对象交给 Spring 进行管理&#xff0c;但是我们在一个类会有若干属性&#xff0c;也就是这个类依赖于这若干个属性&#xff0c;那么我们就可以将交给 Spring 管理的对象注入到这个类中&#xff0c;这也就是依赖注入。 依赖注入有三种…...

解锁动态规划的奥秘:从零到精通的创新思维解析(9)

前言&#xff1a; 小编在前几日写了关于动态规划中的多状态dp的问题&#xff0c;此时小编将会讲述一个动态规划我们常常会遇到的一类问题——股票问题&#xff0c;股票问题就类似小编上一篇所讲述的粉刷房子的问题&#xff0c;可以通过一个二维的dp表来代替多个一维的dp表。买卖…...

redis 配置日志和数据存储位置

Redis配置日志和数据存储位置 介绍 Redis是一个开源的高性能键值存储数据库&#xff0c;常用于缓存、消息队列和实时分析等场景。在使用Redis时&#xff0c;我们需要配置日志和数据存储位置&#xff0c;以便更好地管理和监控Redis的运行状态。本文将介绍如何配置Redis的日志和数…...

STL详解 - stack与queue的模拟实现

目录 一、容器适配器 1. 什么是适配器模式 2. stack与queue的底层结构 3. deque的原理与缺陷 3.1 deque的原理 3.2 deque的缺陷 4. 为何选择deque作为默认底层容器 二、stack与queue的模拟实现 1. stack的实现 2. queue的实现 一、容器适配器 1. 什么是适配器模式 适…...

Chromium 134 编译指南 macOS篇:获取源代码(四)

1. 引言 在Chromium 134的开发之旅中&#xff0c;获取源代码是一个至关重要的里程碑。本文将引导您完成这一关键步骤&#xff0c;为后续的编译和开发工作奠定坚实的基础。无论您是出于学习目的&#xff0c;还是计划开发自己的浏览器项目&#xff0c;掌握获取Chromium源码的方法…...

关于 IntelliJ IDEA 中频繁出现的 Kotlin 及其核心作用

关于 IntelliJ IDEA 中频繁出现的 Kotlin 及其核心作用 1. Kotlin 是什么&#xff1f; Kotlin 是由 JetBrains&#xff08;IntelliJ IDEA 的开发商&#xff09;设计的一种现代化编程语言&#xff0c;2016年正式发布&#xff0c;2017年被 Google 指定为 Android 官方开发语言。…...

MYOJ_11700(UVA10591)Happy Number(快乐数)(超快解法:图论思想解题)

原题(English) Let the sum of the square of the digits of a positive integer S0S0​ be represented by S1S1​. In a similar way, let the sum of the squares of the digits of S1S1​ be represented by S2S2​ and so on. If Si1Si​1 for some i≥1i≥1, then the or…...

2843. 统计对称整数的数目

2843. 统计对称整数的数目 题目链接&#xff1a;2843. 统计对称整数的数目 代码如下&#xff1a; class Solution { public:int countSymmetricIntegers(int low, int high) {int res 0;for (int i low;i < high;i) {string s to_string(i);int n s.size();if (n % 2 …...

【模块化拆解与多视角信息6】自我评价:人设构建的黄金50字——从无效堆砌到精准狙击的认知升级

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…...

ServletRequestAttributeListener 的用法笔记250417

ServletRequestAttributeListener 的用法笔记250417 以下是关于 ServletRequestAttributeListener 的用法详解&#xff0c;涵盖核心方法、实现步骤、典型应用场景及注意事项&#xff0c;帮助您有效监听请求级别属性&#xff08;ServletRequest 中的属性&#xff09;的变化&…...

大模型在胃十二指肠溃疡预测及诊疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法和创新点 二、大模型相关理论基础 2.1 大模型的基本原理 2.2 适用于医疗领域的大模型类型 2.3 大模型在医疗领域的应用现状和潜力 三、胃十二指肠溃疡的疾病特征 3.1 疾病概述 3.2 诊断方法 3.3 …...

第九节:React HooksReact 18+新特性-React 19的use钩子如何简化异步操作?

对比&#xff1a;useEffect vs use处理Promise 代码题&#xff1a;用use改写数据请求逻辑 React 19 use 钩子&#xff1a;异步操作革命性简化方案&#xff08;附完整代码对比&#xff09; 一、useEffect vs use 处理 Promise 核心差异对比 对比维度useEffect 方案use 钩子方案…...

【React】项目的搭建

create-react-app 搭建vite 搭建相关下载 在Vue中搭建项目的步骤&#xff1a;1.首先安装脚手架的环境&#xff0c;2.通过脚手架的指令创建项目 在React中有两种方式去搭建项目&#xff1a;1.和Vue一样&#xff0c;先安装脚手架然后通过脚手架指令搭建&#xff1b;2.npx create-…...

方案精读:华为数字化转型实践案例合集【附全文阅读】

华为数字化转型旨在通过数字化变革实现全连接的智能华为,成为行业标杆,提升客户满意度和运营效率。其以客户为中心,基于 “双轮驱动” 理念,从转意识、方法、文化、组织、模式等方面入手,构建数字化平台,推进数据治理,保障安全,开展业务重构。通过合同 360、产品设计与…...

VScode使用Pyside6(环境篇)

Pyside6的环境搭建&#xff1a; cmd命令窗口输入&#xff1a;pip install pyside6 使用everthing进行查找&#xff1a;&#xff08;非常好用的一款搜索工具 &#xff09; 进入PySide6文件夹中&#xff0c;点击designer.exe,查看是否能够点开。 VScode环境搭建&#xff1a; 下…...

智能云图库-12-DDD重构

本节重点​ 之前我们已经完成了本项目的功能开发。由于本项目功能丰富、代码量大&#xff0c;如果是在企业中维护开发的项目&#xff0c;传统的 MVC 架构可能会让后续的开发协作越来越困难。所以本节鱼皮要从 0 带大家学习一种新的架构设计模式 —— DDD 领域驱动设计。 大纲…...

Linux 网络配置

文章目录 网络基础知识IP地址子网掩码DNS Linux操作系统网络配置 网络基础知识 IP地址 IP地址是用于区分同一个网络中的不同主机的唯一标识。 Internet中的主机要与其他机器通信必须具有一个IP地址&#xff0c;因为网络中传输的数据包必须携带目的IP地址和源IP地址&#xff…...

05-DevOps-Jenkins自动拉取构建代码2

通过前面的操作&#xff0c;已经成功完成了源代码的打包工作&#xff0c;具体操作参见下面的文章&#xff1a; 05-DevOps-Jenkins自动拉取构建代码-CSDN博客 验证打包文件 验证打包后的文件是否存在&#xff0c;进入到Jenkins的工作目录中&#xff0c;找到对应的jar包&#x…...

ESP32之OTA固件升级流程,基于VSCode环境下的ESP-IDF开发,基于阿里云物联网平台MQTT-TLS连接通信(附源码)

目录 1.创建产品和设备 2.准备工作 2.1 获取基础工程 2.2 基本知识概述 2.2.1 OTA升级流程 2.2.2 主题和数据格式 &#xff08;1&#xff09;设备上报版本号 ①请求主题&#xff08;设备 -> 阿里云&#xff09;&#xff1a; ②响应主题&#xff08;阿里云->设备…...

【秣厉科技】LabVIEW工具包——OpenCV 教程(20):拾遗 - imgproc 基础操作(下)

文章目录 前言imgproc 基础操作&#xff08;下&#xff09;8. 霍夫检测9. 滤波与模糊10. 拟合与包围 总结 前言 需要下载安装OpenCV工具包的朋友&#xff0c;请前往 此处 &#xff1b;系统要求&#xff1a;Windows系统&#xff0c;LabVIEW>2018&#xff0c;兼容32位和64位。…...

kafka发送消息,同时支持消息压缩和不压缩

1、生产者配置 nacos中增加配置&#xff0c;和公共spring-kafka配置字段有区分 需要发送压缩消息时&#xff0c;使用该配置类发送即可 import org.apache.kafka.clients.producer.ProducerConfig; import org.springframework.beans.factory.annotation.Autowired; import or…...

AOSP世界时间的更新

在 AOSP&#xff08;Android Open Source Project&#xff09;中&#xff0c;世界时间的更新主要涉及设备时区数据的管理和更新&#xff0c;以确保设备能够正确显示全球各地的时间。AOSP 依赖 IANA 时区数据库&#xff08;也称为 tzdata&#xff09;来提供时区规则和世界时间数…...

Python + 链上数据可视化:让区块链数据“看得懂、用得上”

Python + 链上数据可视化:让区块链数据“看得懂、用得上” 区块链技术的透明性和去中心化特性,使得链上数据成为金融、供应链、NFT 以及 DeFi 领域的关键参考。可是,对于普通用户而言,链上数据往往晦涩难懂,难以直接利用。那么,如何利用 Python 提取、分析并直观展示链上…...

方德桌面操作系统V5.0-G23 vim无法复制粘贴内容

1.修改 Vim 配置文件 rootyuhua-virtualmachine:/etc/docker# sudo vim /usr/share/vim/vim82/defaults.vim 2.在第82行找到set mousea行&#xff0c;将其为set mouse-a。如果文件中没有set mousea&#xff0c;则修改添加set mouse-a。 3.保存文件并退出 Vim&#xff1a; 4…...

[linux] vim 乱码

1. 确保终端支持中文 设置终端编码为 UTF-8,运行: echo $LANG如果不是 UTF-8(如 en_US.UTF-8),你可以设置为: export LANG=zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8 2. 确保 Vim 使用 UTF-8 编码 打开 .vimrc 或输入以下命令: :set encoding=utf-8 :set fileencodin…...

天洑参加人工智能校企产学研及人才对接活动——走进南京大学人工智能学院

4月15日&#xff0c;人工智能校企产学研及人才对接——走进南京大学人工智能学院活动在南京大学成功举办。此次活动由江苏省人工智能学会、南京大学人工智能学院主办&#xff0c;江苏省工业和信息化厅党组成员、副厅长池宇&#xff0c;南京大学副校长周志华出席。江苏省工业和信…...

33、单元测试实战练习题

以下是三个练习题的具体实现方案&#xff0c;包含完整代码示例和详细说明&#xff1a; 练习题1&#xff1a;TDD实现博客评论功能 步骤1&#xff1a;编写失败测试 # tests/test_blog.py import unittest from blog import BlogPost, Comment, InvalidCommentErrorclass TestBl…...

《AI大模型应知应会100篇》第22篇:系统提示词(System Prompt)设计与优化

第22篇&#xff1a;系统提示词(System Prompt)设计与优化 摘要 在大语言模型&#xff08;LLM&#xff09;应用中&#xff0c;系统提示词&#xff08;System Prompt&#xff09;是控制模型行为的核心工具之一。它不仅定义了模型的身份、角色和行为规范&#xff0c;还直接影响输…...

【KWDB 创作者计划】_深度学习篇---松科AI加速棒

文章目录 前言一、简介二、安装与配置硬件连接驱动安装软件环境配置三、使用步骤初始化设备调用SDK接口检测设备状态:集成到AI项目四、注意事项兼容性散热固件更新安全移除五、硬件架构与技术规格核心芯片专用AI处理器内存配置接口类型物理接口虚拟接口能效比散热设计六、软件…...

【Quest开发】在虚拟世界设置具有遮挡关系的透视窗口

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 仅针对urp管线 参考了YY老师这篇&#xff0c;可以先看他的再看这个可能更好理解一些&#xff1a;Unity Meta Quest MR 开发&#xff08;七&#xff09;&#xff1a;使…...

Spark on K8s 在vivo大数据平台的混部实战

作者&#xff1a;vivo 互联网大数据团队- Qin Yehai 在离线混部可以提高整体的资源利用率&#xff0c;不过离线Spark任务部署到混部容器集群需要做一定的改造&#xff0c;本文将从在离线混部中的离线任务的角度&#xff0c;讲述离线任务是如何进行容器化、平台上的离线任务如何…...

Mac配置Java的环境变量

刚拿到手的Mac mini M4如何去设置java的环境变量&#xff1f; 第一步&#xff1a; 首先&#xff0c;你先下载好intelliJ IDEA&#xff0c;然后在里面自带的jdk列表里选择你自己想要使用的jdk的版本以及供应商。 下面是我自己使用的jdk版本以及供应商&#xff1a; 第二步&am…...

RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION函数分析之创建一个RPCRT4!OSF_CCALL--RPC源代码分析

RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION函数分析之创建一个RPCRT4!OSF_CCALL 第一部分&#xff1a; 1: kd> p RPCRT4!OSF_CCONNECTION::OSF_CCONNECTION0x167: 001b:77bf6957 393dec35c877 cmp dword ptr [RPCRT4!gfRPCVerifierEnabled (77c835ec)],edi 1: kd> …...

6、事件处理法典:魔杖交互艺术——React 19 交互实现

一、魔杖启灵&#xff1a;交互魔法的本质 "记住&#xff0c;巫师们&#xff01;魔杖的每一次挥动都是与魔法世界的对话&#xff0c;"麦格教授的魔杖在空中划出金色事件流&#xff0c;"React 19的useTransition如同时间转换器&#xff0c;让麻瓜设备也能感知魔杖…...

.net C# 使用Epplus库将Datatable导出到Excel合并首列

最近处理大量数据,需单独导出到首列名称一致的excel,Epplus免费,效率spire高,在Nuget添加Epplus。因为特殊原因,不能使用数据库,只能由数据源导出到excel;最终处理39万行输出到单独的excel文件时间2分钟。 一、EPPlus 基础介绍 ​EPPlus​ 是一个开源的 .NET 库(适用…...

【gpt生成-总览】怎样才算开发了一门编程语言,需要通过什么测试

开发一门真正的编程语言需要经历完整的设计、实现和验证过程&#xff0c;并通过系统的测试体系验证其完备性。以下是分阶段开发标准及测试方法&#xff1a; 一、语言开发核心阶段 1. 语言规范设计&#xff08;ISO/IEC 标准级别&#xff09; ​​语法规范​​&#xff1a;BNF/…...

网络417 路由转发2 防火墙

路由器临时开启路由转发功能 查看节点a网关ip 节点b网关 1.开启路由器路由转发功能。 2.配置到节点a 节点b的网络。 节点a因为和节点b不在同一网段&#xff0c;计划通过网关直达 网关就是中间节点路由器的ip地址 再Ping另一个 计划节点bping节点c ping不通 是因为 修改了…...

HttpSessionAttributeListener 的用法笔记250417

HttpSessionAttributeListener 的用法笔记250417 以下是关于 HttpSessionAttributeListener 的用法详解&#xff0c;涵盖核心方法、应用场景、实现步骤及关键注意事项&#xff0c;帮助您有效监听会话&#xff08;HttpSession&#xff09;中属性的动态变化&#xff1a; 1. 核心功…...

Spring Boot 实现 Excel 导出功能(支持前端下载 + 文件流)

&#x1f9e0; 一、为什么用 EasyExcel&#xff1f; 在 Java 开发中&#xff0c;操作 Excel 的框架主要有&#xff1a; Apache POI&#xff08;经典但慢、内存占用大&#xff09; JXL&#xff08;老旧不维护&#xff09; Alibaba EasyExcel&#xff08;阿里出品&#xff0c;…...

Java动态批量生成logback日志文件

应用场景举个例子&#xff1a; 当我一个服务需要启动n个端口&#xff0c;来监听n个来源的数据&#xff0c;并且处理数据逻辑一致&#xff1b;但是我想要它们的日志分开文件夹来打印&#xff0c;从而更好的分析问题&#xff0c;那么就可以用我下面提供的模版了&#xff1b; 动态…...