C++学习之路:深入理解变量
目录
- 编程的本质
- 变量的本质
- 内存模型、变量名与值以及地址的关系
- 数据类型
- C++数据类型
- 数据类型别名
- 数据类型转换
- 变量作用域
- 总结
编程的本质
编程的本质是什么?虽然程序里能实现很多复杂的逻辑,但是从底层的硬件上来看,编程的本质就是数据的搬移。比如说实现一个加法运算:c = a + b
,从逻辑的角度来看进行了一次加法运算,但是从硬件角度来看这个加法指令可以被简单描述为:算术逻辑单元(ALU)把a,b的值搬运到加法器的输入寄存器中,经过几个时钟周期后再把输出寄存器的值取出来放到c里面
这就是加法指令的实质:只要把数据搬移到加法器输入寄存器上,具体加法怎么实现我们完全不用关心,处理完后再从结果寄存器中取出来就行了。
从这个角度来看计算过程中的这个数据(C++编程中的变量值)是核心中的核心,这章主要从比较底层的角度来谈一下对于C++中变量的一个认识。
变量的本质
变量的本质是什么?变量的本质是一个存储数据的容器,这句话揭示了变量与数据的关系,即变量是容器,数据是容器的内容,就像箱子和箱子里的货,软件编程就是把装着箱子的货物运输出去到不同的地方进行处理,完成后再取回来存储到某个地方的过程,具体怎么运算是硬件的事情。
内存模型、变量名与值以及地址的关系
变量在硬件层面对应的就是内存单元,每个一个内存单元都有两个要素:内存地址,内存存储的数据,地址和数据是单向的对应关系,由地址可以找到数据,但是知道数据却不一定能够知道对应的地址是什么,下图是内存模型示意图:
最早的时候,比如在写机器码以及后来汇编语言的时代,变量的使用确实如上图这样朴素,就是通过地址来查找对应的数据,然后再对其进行编程。但这种方式是不符合人类习惯的。就好比大家称呼一个人都是使用名字而不是念身份证号。后来出现的高级语言例如C/C++,引入了变量名作为内存单元的代称或者说标识符,直接就解决了这个问题。但这也带来了一些问题,例如变量名,地址,数据(变量值)之间纠缠不清的关系,这也导致了大家在使用指针时带来的巨大的理解上的困难。
变量名、值,以及地址它们之间的关系就像上图这样,变量名是地址的代称,因此给变量名赋值相当于给地址下的内存单元赋值。注意:C++中的地址是指首地址,一个变量可能占用多个字节
从本质上来说改变一个变量的值还是和机器码编程一样:改变对应地址下的内存数据。这就不难理解函数传参时值传递无法改变传进去的变量本身,但是通过地址传递时可以改变变量本身了,因为从变量名到地址到变量值是一个单向的过程,你可以通过取址&符号
获得变量名对应的地址,再通过取值符号*
获得对应地址下的变量值;但是无法通过变量值获得地址,进而也无法修改变量,并且也无法通过地址得知变量名(变量名只存在于编程中,实际上没有任何内存单元存储它)。
数据类型
数据是内存单元中存放的内容,为什么要有数据类型这种说法呢?从物理上来说,一个内存单元里面只能存储一个字节Byte(即8-bit)大小的数据。顺便提一下,虽然内存单元通常为 1 字节,但处理器可以一次访问多个字节,具体取决于数据总线的宽度和指令集的支持:
8 位处理器:一次访问 1 字节。
16 位处理器:一次访问 2 字节。
32 位处理器:一次访问 4 字节。
64 位处理器:一次访问 8 字节。
现实中我们需要处理各种不同类型的数据,比如整数,字符,小数等,它们占用内存的大小,具体的表达规则都各不相同。在机器码时代,我们需要手工去定义管理各种不同的数据,即使到了汇编语言时代,出现了字节的概念,定义一个变量仍需要手动指定占用的字节大小,程序员需要手动处理数据的存储、转换和解释。到了C/C++中,数据类型的概念逐渐明显:数据类型的意义在于为程序中的数据定义明确的存储方式、取值范围和操作规则,从而确保程序的正确性、可读性和效率。 通过变量声明的方法可以实现变量内存的自动化管理。
C++数据类型
C++的数据类型有布尔、字符、整型、浮点、双精度浮点、数组、指针、结构体、类、枚举、联合体、引用、数据结构,另外还有基于这些类型的修饰符,例如unsigned、long、short等。具体的类型介绍可以去网上找这是一个造轮子的事情就不过多叙述。另外几个重要的数据类型我也会单独出章节来总结,这里挑几个需要注意的来讲。
- 布尔类型
bool类型就是true\false
,现在C++中已经可以用true\false
作为保留字直接定义真假了,等价于0\1。为什么单独提这个出来呢?因为bool类型应该算是最小的一种数据类型了,理论上只需要占用一个bit的内存空间就可以存储。但是,在实际编程中,布尔类型通常不会仅占用 1 位,而是占用 1 字节(8 位) 或更多。原因如下:- 内存对齐:现代计算机以字节为单位访问内存,单独存储 1 位会导致内存对齐问题,降低性能。
- 硬件支持:大多数 CPU 指令集以字节为单位操作数据,单独操作 1 位效率较低。
- 浮点类型
浮点类型可太妙了,用起来时不需要关系浮点实现的原理,当实数计算就行了,但是要探究其存储计算的原理时就犯难了。小数转二进制好理解,但如果转成二进制的话小数点的位置是不定的该怎么办?例如10.1和1.01,在内存结构中是不存在小数点这个部件的。
这里的方法就是提取指数,将二进制小数表示为符号位x1.尾码 x 指数n
的形式。为什么那么肯定是1.尾码 x 指数n
的形式呢?因为前面的0都省略了,开头肯定是1。(ex: 0.00012 = 1.2 x 10-4)
符号位sign表示正负,exponent指数位表示指数大小,fraction存储尾码但精度浮点内存结构如下图所示:
其中sign的0表示负数1表示正数,指数指为移码即指数值+偏移量(指数值+127),尾数位存储小数点后的二进制码。
float类型占用4个字节:
数据类型别名
- typedef
具体用法为:typedef 数据类型 别名;
例如 typedef float My_float; 以及最常用的 typedef struct 结构体名 别名;这样定义以后再声明结构体xxx的时候就可以直接用别名来声明结构体实例了。 - #define
#define 叫宏定义属于预编程指令的一种。用法为#define 别名 数据类型
或者更常用的在头文件开头定义#define XXX_H_
或者定义常量#define 常量名 常量值
- using
using 别名 = 数据类型;
数据类型转换
- 隐式转换
隐式转换一般用在关联比较大的数据类型之间,例如整形和浮点,整形和double等,编译器会自动转换。
这里需要考虑一下计算时的转换:int + float/double,int会被转为float或者double;如果是字符char计算,则会被转为数字类型。 - C风格的转换
C风格的转换语法为(type)value
,例如float a = (float)b
这种转换是不进行安全检查的,因此容易转换出错。 - 显式转换
- static_cast方法
用于非多态类型的安全转换,如基本数据类型之间的转换,或者向上转型(从派生类指针转换为基类指针)不能转换不同类型的指针。语法为static_cast<O_type>(value)
,例如int a = static_cast<int>(b)
- dynamic_cast方法
用于将基类指针转为派生类指针。要满足这几个条件:- 必须有继承关系的类之间才能转换
- 基类中必须要有虚函数
语法为:Derived* D_ptr = dynamic_cast<Derived*>(B_ptr)
- const_cast方法
用于移除或添加const或volatile属性,只对常量指针以及常量引用有效。
#include<iostream>
#include <cstring>
using namespace std;int main(){
const int *a;
int* b = const_cast<int*>(a) ;
*b = 10;
cout << *a <<endl; //输出*a = 10,说明常量指针得以转换为指针
return 0;
}
- reinterpret_cast
用于不同类型指针之间的转换,以及将指针转换为整数<long>
#include<iostream>
#include <cstring>
using namespace std;int main(){
char* a = new char;
int* b = new int;b = static_cast<int*>(a); //报错,error: invalid 'static_cast' from type 'char*' to type 'int*'b = reinterpret_cast<int*>(a); //成功执行
return 0;
}
变量作用域
一般来说,变量只会被定义在三个地方:
- 在一个函数内或者代码块内部定义(if/for等)的变量称为局部变量。
- 在所有函数外部定义的变量,称为全局变量。
补充一个知识点,形参与实参:
3. 在C++中,形参(形式参数)是函数定义
中声明的变量,用于接收调用函数时传递的实参值。
例如,void func(int a,int b)
这里的a与b就叫形式参数,是数据传递的媒介。
4. 实参(Argument) 是函数或方法调用时实际传递给函数的具体值、变量或表达式。
例如,func(a,b)
形参是传入函数的具体值,可以是常量,变量以及表达式。
总结来说,实参是调用函数时传递的具体数据,形参是函数定义时声明的占位符。
作用域是程序的一个区域,可以分为以下几种:
- 局部作用域
在函数内部声明的变量(即局部变量)只能在声明的函数与代码块内部访问,并且随着函数或者代码块的执行完成后销毁。 - 全局作用域
即在全局变量具有的作用域,可以被程序中的任何函数访问。全局变量在程序开始时被创建,在程序结束时被销毁。 - 类作用域
在类内部声明的变量,可以被类内所有成员函数访问。类作用域的生命周期与类的生命周期相同。
总结
关于变量的知识就介绍到这里了,重点是变量模型的概念要在脑海中建立起来,明白地址对于变量的重要性,这对之后学习指针的使用至关重要。其余的关于类型转换和作用域等的知识介绍只涉及了最常用的部分,要想深入了解可以单独去查询相关的博客。
相关文章:
C++学习之路:深入理解变量
目录 编程的本质变量的本质内存模型、变量名与值以及地址的关系数据类型C数据类型数据类型别名数据类型转换 变量作用域总结 编程的本质 编程的本质是什么?虽然程序里能实现很多复杂的逻辑,但是从底层的硬件上来看,编程的本质就是数据的搬移。…...
前端基础知识汇总
目录 HTML5详解(结构层) 什么是HTML HTML基本结构 网页基本信息 图像标签 链接标签 超链接 行内元素与块元素 列表标签 表格标签 页面结构分析 iframe内联框架 表单语法 表单元素格式 表单的简单应用 表单初级验证 CSS详解(…...
2024蓝桥杯省赛C/C++大学B组 题解
文章目录 2024蓝桥杯省赛C/C大学B组A 握手问题(5分)B 小球反弹(5分)C 好数(10分)D R 格式(10分)E 宝石组合(15分)F 数字接龙(15分)G 爬…...
BIM/I-FGSM对抗样本生成算法实现(pytorch版)
BIM/I-FGSM对抗样本生成算法 一、理论部分1.1 核心思想1.2 数学形式1.3 BIM 的优缺点1.4 BIM 与 FGSM、PGD 的关系1.5 实际应用建议二、代码实现2.1 导包2.2 数据加载和处理2.3 网络构建2.4 模型加载2.5 生成对抗样本2.6 攻击测试2.7 启动攻击2.8 效果展示一、理论部分 1.1 核心…...
前沿科技:从Gen2到Gen3—Kinova轻型机械臂的技术升级路径
Kinova品牌在轻型机械臂行业中以其轻量化、灵活性和高精度的技术特点而知名。其产品线广泛适用于医疗、科研和工业等多个领域,对机器人技术的进步起到了积极的推动作用。Kinova轻型机械臂凭借其精良的设计和稳定的性能,为用户提供了高效且可靠的解决方案…...
智研咨询:2025DeepSeek技术全景解析重塑全球AI生态的中国力量|附下载方法
导 读INTRODUCTION 随着人工智能技术的飞速发展,AI大模型已成为推动行业进步的重要力量。智研咨询最新发布的《DeepSeek技术全景解析重塑全球AI生态的中国力量》报告,深入探讨了DeepSeek公司在AI领域的突破性成就及其对全球AI生态的深远影响。 如果感兴…...
超导量子计算机编程实战:IBM Qiskit 2025新API详解
一、量子计算平台演进与Qiskit 2025定位 1.1 IBM量子硬件发展路线 2025年IBM将实现三大技术突破: 量子体积:新一代"Goldeneye"处理器达到QV 8192相干时间:超导量子比特寿命突破500μs互联规模:模块化架构支持万级量子…...
斐波那契数列----C语言
关于斐波那契 已知: 问题背景:一对兔子从第3个月开始每月生一对新兔子,新兔子同样在第3个月开始繁殖。 关键观察: 第1个月:1对(初始兔子)。 第2个月:1对(未成熟&#…...
打开pycharm显示编制索引后卡死
若项目中包含过多文件,PyCharm 启动后会进行自动索引,电脑性能不高时往往会导致崩溃(主要是内存问题)。以下为解决措施。 ✅ 1. 仅索引代码,排除文件 设置PyCharm 主要索引代码文件(.py、.ipynbÿ…...
AWS云安全全面详解:从基础防护到高级威胁应对
随着企业加速向云端迁移,AWS作为全球最大的云服务提供商之一,其安全性成为用户首要关注的问题。本文将深入剖析AWS云安全架构,从基础防护到高级威胁应对,帮助您构建全方位的云安全防线。 一、AWS安全责任共担模型 在深入探讨AWS具体安全措施前,首先需要理解AWS的安全责任…...
【C++重点】虚函数与多态
在 C 中,虚函数是实现多态的基础。多态是面向对象编程的重要特性之一,允许程序在运行时决定调用哪一个函数版本。通过虚函数,我们能够实现动态绑定,使得不同类型的对象可以通过相同的接口进行操作。 1 静态绑定与动态绑定 静态绑…...
算法学习之BFS
关于BFS我的理解是根据离我们当前这个点的权重来移动,这里权重也可以理解为离这个点的距离, 从起点开始,往前走一步,记录下所有第一步能走到的点开始,然后从所有第一部能走到的点开始向前走第二步,重复下去…...
每日小积累day1
网络: g是用来检测网络联通性的的诊断工具,使用的协议是ICMP 显示数据包括 ICMP数据:序列号,存活时间(TTL) 目标主机域名IP 往返时间(RTT) 统计数据(平均RTT等等&a…...
【NLP】13. NLP推理方法详解 --- 穷举和贪心搜索
NLP推理方法详解 — 穷举和贪心搜索 在自然语言处理(NLP)任务中,推理(Inference)是指在给定模型的情况下,找到最可能的输出序列。由于模型通常是神经网络,它会为每个可能的输出分配一个概率&am…...
基于 Python 深度学习 lstm 算法的电影评论情感分析可视化系统(2.0 系统全新升级,已获高分通过)
大家好,欢迎来到我的技术专栏!今天我将和大家聊聊如何利用 Python 的深度学习技术,打造一个集电影评论情感分析与可视化展示于一体的系统。这个系统不仅能自动采集和解析海量影评,还能实时生成直观的情感趋势图表,对于…...
妙用《甄嬛传》中的选妃来记忆概率论中的乘法公式
强烈推荐最近在看的不错的B站概率论课程 《概率统计》正课,零废话,超精讲!【孔祥仁】 《概率统计》正课,零废话,超精讲!【孔祥仁】_哔哩哔哩_bilibili 其中概率论中的乘法公式,老师用了《甄嬛传…...
linux--------------进程控制
1.进程创建 1.1fork函数初识 在linux中fork函数是⾮常重要的函数,它从已存在进程中创建⼀个新进程。新进程为⼦进程,⽽原进 程为⽗进程。 #include <unistd.h> pid_t fork(void); 返回值:⾃进程中返回0,⽗进程返回⼦进程id…...
Video Transformer Network
目录 摘要 Abstract VTN 背景 模型框架 视频特征提取 时空位置编码 Transformer编码器 任务特定头 关键创新 实验 代码 总结 摘要 Video Transformer Network 是基于Transformer架构改进的视频理解模型,旨在解决传统3D卷积神经网络在长距离依赖建模和…...
Java网络编程演进:从NIO到Netty的UDP实践全解析
前言 在当前高并发、大数据量的互联网环境下,高性能的网络通信框架变得越来越重要。本文将深入探讨Java网络编程的演进,从NIO到Netty,并通过实际案例分析Netty的优势和应用。(本次主要以UDP请求为例) Java网络编程演…...
Linux系统中快速安装docker
1 查看是否安装docker 要检查Ubuntu是否安装了Docker,可以使用以下几种方法: 方法1:使用 docker --version 命令 docker --version如果Docker已安装,输出会显示Docker的版本信息,例如: Docker version …...
人工智能之数学基础:幂法和反幂法求特征值和特征向量
本文重点 特征值和特征向量是矩阵的重要性质,我们前面学习了矩阵的正交分解,要想完成正交分解需要求出一个矩阵的特征值和特征向量。有的时候,我们只需要求出一个矩阵的最大的特征值以及矩阵的最小特征值,它们以及它们对应的特征向量具有特殊的含义,下面我们介绍两种方法…...
数据结构 -- 树的应用(哈夫曼树和并查集)
树的应用 哈夫曼树 带权路径长度 结点的权:有某种现实含义的数值(如:表示结点的重要性等) 结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积 树的带权路径…...
游戏引擎学习第193天
仓库:https://gitee.com/mrxiao_com/2d_game_4 回顾 我们昨天做了一些非常有趣的实验。在实验中,我们的目标是实现一个能够在运行时改变的编译时常量的概念。最开始,这个想法纯粹是出于一时的兴趣,觉得这应该是个很有意思的尝试。于是我们进…...
数据结构每日一题day7(顺序表)★★★★★
题目描述:从顺序表中删除其值在给定值s与t之间(包含s和 t,要求 s<t)的所有元素,若s或t不合理或顺序表为空,则返回 false,若执行成功则返回 true。 算法思想: 输入检查:若顺序表为空、指针为…...
ACM模式常用方法总结(Java篇)
文章目录 一、ACM输入输出模式二、重要语法2.1、导包2.2、读取数据2.3、判断是否有下一个数据2.4、输出2.5、关闭scanner2.6、易踩坑点 一、ACM输入输出模式 在力扣上编写代码时使用的是核心代码模式,如果在面试中遇到ACM模式就会比较迷茫?ACM模式要求你…...
SpringCould微服务架构之Docker(6)
容器的基本命令: 1. docker exec :进入容器执行命令 2. docker logs: -f 持续查看容器的运行日志 3. docker ps:查看所有运行的容器和状态 案例:创建运行一个容Nginx容器 docker run--name myNginx -p 80:80 -d nginx 命…...
脑疾病分类的疑惑【7】一般FMRI数据都存储为什么格式?能不能给我用数据简单的描述一下FMRI是如何存储的?
fMRI 数据通常以 NIfTI(Neuroimaging Informatics Technology Initiative) 格式存储,这是一种专为神经影像设计的开放标准格式。以下是简化说明和示例: 1. 常见fMRI数据格式 格式扩展名特点NIfTI.nii 或 .nii.gz最常用࿰…...
DOM 加载函数
DOM 加载函数 在Web开发中,DOM(文档对象模型)加载函数是一个核心概念。它指的是在页面加载过程中,浏览器如何处理和解析HTML文档,并创建相应的DOM树。本文将深入探讨DOM加载函数的作用、原理及其在Web开发中的应用。 引言 随着互联网的飞速发展,Web技术日新月异。DOM作…...
[特殊字符]《Curve DAO 系统学习目录》
本教程旨在系统学习 Curve DAO 项目的整体架构、核心机制、合约设计、治理逻辑与代币经济等内容,帮助开发者全面理解其设计理念及运作方式。 目录总览: 1. Curve 项目概览 • 1.1 Curve 是什么?主要解决什么问题? • 1.2 与其他…...
webpack和vite之间的区别
Webpack 和 Vite 都是现代前端开发中非常流行的构建工具,但它们的设计理念、工作原理以及适用场景都有所不同。以下是两者之间详细的对比说明: 1. 构建机制与速度 Webpack: Webpack 是一个通用的模块打包工具,它通过分析项目中的依赖关系图来…...
《Operating System Concepts》阅读笔记:p495-p511
《Operating System Concepts》学习第 44 天,p495-p511 总结,总计 17 页。 一、技术总结 1.cache (1)定义 A cache is a region of fast memory that holds copies of data. (2)cache 和 buffer 的区别 The difference between a buffer and a cac…...
Java进阶——位运算
位运算直接操作二进制位,在处理底层数据、加密算法、图像处理等领域具有高效性能和效率。本文将深入探讨Java中的位运算。 本文目录 一、位运算简介1. 与运算2. 或运算异或运算取反运算左移运算右移运算无符号右移运算 二、位运算的实际应用1. 权限管理2. 交换两个变…...
特征增强金字塔FPN
特征增强金字塔FPN 利用 ConvNet 特征层次结构的金字塔形状,构建一个在所有尺度上都具有强大语义的特征金字塔 总结:特征金字塔是检测不同尺度物体的识别系统中的基本组成部分。 1.利用深度卷积网络固有的多尺度、金字塔层次结构,以边际额…...
Java课程设计(双人对战游戏)持续更新......
少废话,当然借助了ai,就这么个实力,后续会逐渐完善...... 考虑添加以下功能: 选将,选图,技能,天赋,道具,防反,反重力,物理反弹,击落…...
c++第三课(基础c)
1.前文 2.break 3.continue 4.return 0 1.前文 上次写文章到现在,有足足这么多天(我也不知道,自己去数吧) 开始吧 2.break break是结束循环的意思 举个栗子 #include<bits/stdc.h> using namespace std; int main(…...
Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(十一)
注册表设置 GPU虚拟化标志 GpuVirtualizationFlags 注册表项用于设置半虚拟化 GPU 的行为。 密钥位于: DWORD HKLM\System\CurrentControlSet\Control\GraphicsDrivers\GpuVirtualizationFlags 定义了以下位: 位描述0x1 为所有硬件适配器强制设置…...
Android在KSP中简单使用Room
Android在KSP中简单使用Room 最近下载了最新版Studio,好多依赖和配置都需要升级,之前使用过room封装数据库工具类,最近在整理ksp相关,于是把room也升级了,简单记录一下升级过程,直接上代码。 1.添加KSP依…...
Maven 构建配置文件详解
Maven 构建配置文件详解 引言 Maven 是一个强大的项目管理和构建自动化工具,广泛应用于 Java 开发领域。在 Maven 项目中,配置文件扮演着至关重要的角色。本文将详细介绍 Maven 构建配置文件的相关知识,包括配置文件的作用、结构、配置方法等,帮助读者更好地理解和应用 M…...
精确截图工具:基于 Tkinter 和 PyAutoGUI 的实现
在日常工作中,截图是一个非常常见的需求。虽然 Windows 自带截图工具,但有时我们需要更精确的截图方式,比如选取特定区域、快速保存截图并进行预览。本篇博客将介绍一个使用 Python 结合 Tkinter 和 PyAutoGUI 开发的精确截图工具。 C:\pytho…...
Linux练习——有关硬盘、联网、软件包的管理
1、将你的虚拟机的网卡模式设置为nat模式,给虚拟机网卡配置三个主机位分别为100、200、168的ip地址 #使用nmtui打开文本图形界面配置网络 [rootrhcsa0306 ~]# nmtui #使用命令激活名为 ens160 的 NetworkManager 网络连接 [rootrhcsa0306 ~]# nmcli c up ens160 #通…...
【C++】 —— 笔试刷题day_12
一、删除公共字符 题目解析 题目给了两个字符串(其中包含空格),让我们在第一个字符串中删除第二个字符串中的字符。 我们要输出删除后的字符串。 算法思路 这道题,如果直接按照题目中的要求去第一个字符串中删除字符,…...
家乡旅游景点小程序(源码+部署教程)
运行环境 家乡旅游景点小程序运行环境如下: • 前端:小程序 • 后端:无 • IDE工具:微信开发者工具 • 技术栈:小程序 注意:此项目为纯静态项目,无后端 主要功能 家乡旅游景点微信小程序主…...
SQL Server:当在删除数据库时因为存在触发器而无法删除
当在删除数据库时因为存在触发器而无法删除,你可以通过禁用触发器来解决这个问题。下面为你介绍在 SQL Server 里禁用和启用触发器的方法。 禁用数据库中所有表的触发器 你可以使用系统视图 sys.triggers 来查询数据库里所有的触发器,然后生成禁用这些…...
多人协同进行qt应用程序开发应该注意什么2?
在多人协同开发Qt应用程序时,为了确保高效协作、代码一致性和项目可维护性,需要特别注意以下关键点: 1. 版本控制与协作流程 统一版本控制工具:使用Git并规范分支策略(如Git Flow),通过.gitign…...
js关于for of 与for in
for…of for-of循环用于遍历可迭代对象,如数组、字符串、Map、Set等。它直接访问每个元素的值,而不是键名。 const arr [3,5,6,7,0] for(let item of arr){console.log(item); } // 3 // 5 // 6 // 7 // 0只有部署了Iterator接口的数据结构才能使用fo…...
Python Excel
一、Python读Excel——xlrd -*- coding: utf-8 -*- import xlrddef read_excel():打开文件workbook xlrd.open_workbook(rD:\demo1.xlsx)获取所有sheetprint(workbook.sheet_names()) 列表形式返回sheet1_name workbook.sheet_names()[0]根据sheet索引或者名称获取sheet内容…...
前端全局编程和模块化编程
1. 全局编程 <!DOCTYPE html> <html> <head><title>OpenLayers 示例</title><style>.map {width: 100%;height: 400px;}</style><script src"https://cdn.jsdelivr.net/npm/olv7.4.0/dist/ol.js"></script>&…...
随机2级域名引导页HTML源码
源码介绍 随机2级域名引导页HTML源码,每次点进去都随机一个域名前缀。 修改跳转域名在 350 行代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行 效果预览 源码免费获取 随机2级域名引导页…...
Latex的各种数学公式
Latex的各种数学公式 简介公式1、 A 、 A ‾ \neg A\text{、}\overline{A} A、A2、 、 \text{、} 、3、 ⋅ 、 ∙ \cdot \text{、} \bullet ⋅、∙ 4、表格 简介 这里会随时更新我需要用到的数学公式,以csdn中写作格式为主,可能过时了,不适合…...
稻壳模板下载器(Windows):免费获取WPS稻壳模板的利器
稻壳模板下载器(Win) 稻壳模板下载器是一款功能强大的工具,能够帮助用户免费下载WPS稻壳儿中的各种模板,无需开通VIP会员。它支持多种模板类型,包括PPT、Word、Excel等,极大地提升了用户的办公效率。 依托…...