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

C/C++数据结构之静态数组

概述

        静态数组是C/C++中一种基础的数据结构,它允许用户在编译时便确定数组的大小,并分配固定数量的连续存储空间来存放相同类型的元素。静态数组的主要特点是:其大小在声明时就必须指定,且在其生命周期内保持不变。这也意味着,一旦定义了一个静态数组,就不能改变它的大小,或重新分配内存。

声明与初始化

        声明一个静态数组,首先需要明确指定数组的类型和尺寸。声明格式通常如下:

        type arrayName[size];

        其中,type代表数组中元素的数据类型(比如:int、float等),而size则是在编译期可以确定的一个常量值或常量表达式,表示数组能够容纳的元素个数。比如:要声明一个包含6个整数的数组,可以写为如下代码。

int paNumber[6];

        在声明数组的同时,还可以对数组进行初始化。初始化时,可以直接给出所有元素的值,形式如下:

        type arrayName[size] = {value1, value2, ..., valueN};

        其中,value1到valueN是数组各个元素的初始值,N必须不大于size。如果提供的初始值个数N少于数组的尺寸size,则剩余未赋值的元素将被自动初始化为其类型的默认值(对于数值类型,默认值为0)。下面的示例代码创建了一个名为paNumber的整型数组,前三个元素分别为66、77和88,剩下的三个元素被初始化为0。

int paNumber[6] = {66, 77, 88};

        当声明和初始化同时进行时,我们可以忽略数组的尺寸。此时,编译器会自动推断出数组元素的个数。

// 编译器自动推断出数组元素的个数为3
int paNumber[] = {66, 77, 88};

        在现实生活中,有许多需要使用静态数组的例子,尤其是那些数据规模固定或可以预先确定的场景。在天气预报系统中,一天分为24小时,每个小时的温度可以用静态数组来存储。

// 存储一天24小时的温度
double paTemperature[24];

        通过静态数组这种数据结构,我们可以轻松记录和查询某个小时的温度,或计算一天的平均温度。

基本操作

        静态数组提供了多种基本操作,包括但不限于:访问、修改、遍历。

        访问数组中的某个元素,可以通过下标运算符[]实现,其语法格式如下:

        arrayName[index];

        其中,index是从0开始计数的位置索引。比如:有一个名为paNumber的整型数组,想要获取第三个元素的值,可以写作paNumber[2]。

        修改数组元素同样简单,只需给定目标元素的索引,并通过赋值操作即可完成。比如:将上述paNumber数组的第四个元素更新为99,可执行如下代码。

paNumber[3] = 99;

        遍历整个数组也是比较常见的操作,常用方法是利用循环逐个访问每个元素。在下面的示例代码中,我们使用for循环遍历并打印了一个整型数组的所有元素。

int paNumber[6] = {66, 77, 88};
int nSize = sizeof(paNumber) / sizeof(paNumber[0]);
for (int i = 0; i < nSize; ++i)
{cout << paNumber[i] << " ";
}cout << endl;

总结

        静态数组的优势在于:简单、直接,易于理解和使用。由于它们的大小在编译时就已知,因此可以进行一些优化,从而加快访问速度。另外,静态数组的内存分配效率较高,因为不需要在运行时管理内存分配和释放的过程。

        但静态数组也存在一定的局限性,最明显的限制是不能根据需要调整大小,这可能导致内存浪费或内存不足。比如:在程序运行过程中,如果需要存储比预先定义的数量更多的数据,无法通过扩展静态数组来实现。同样地,如果实际使用的数据量远小于静态数组的容量,则会造成内存资源的浪费。

        注意:静态数组的大小不宜过大,否则,很容易因为超出线程的堆栈大小而造成溢出,从而出现各种莫名其妙的问题。

相关文章:

C/C++数据结构之静态数组

概述 静态数组是C/C中一种基础的数据结构&#xff0c;它允许用户在编译时便确定数组的大小&#xff0c;并分配固定数量的连续存储空间来存放相同类型的元素。静态数组的主要特点是&#xff1a;其大小在声明时就必须指定&#xff0c;且在其生命周期内保持不变。这也意味着&#…...

pyqt f-string

文章目录 一、f-string的基本语法二、代码中的具体应用拼接效果 三、f-string的核心优势四、与其他字符串格式化方式的对比五、在Qt程序中的实际作用六、扩展用法&#xff1a;在f-string中添加格式说明 Python的 f-string&#xff08;格式化字符串字面值&#xff09; 特性&…...

夏普 AR-2348SV 打印机信息

基本信息&#xff1a;这是一款黑白 A3 激光多功能数码复合机&#xff0c;可实现打印、复印、扫描功能。性能参数 打印 / 复印速度&#xff1a;23 张 / 分钟。分辨率&#xff1a;600x600dpi&#xff0c;能确保文字和图像清晰。最大打印 / 复印尺寸&#xff1a;A3。纸张支持&…...

跨个体预训练与轻量化Transformer在手势识别中的应用:Bioformer

目录 一、从深度学习到边缘部署&#xff0c;手势识别的新突破 &#xff08;一&#xff09;可穿戴设备 边缘计算 个性化医疗新可能 &#xff08;二&#xff09;肌电信号&#xff08;sEMG&#xff09;&#xff1a;手势识别的关键媒介 &#xff08;三&#xff09;挑战&#…...

探索常识性概念图谱:构建智能生活的知识桥梁

目录 一、知识图谱背景介绍 &#xff08;一&#xff09;基本背景 &#xff08;二&#xff09;与NLP的关系 &#xff08;三&#xff09;常识性概念图谱的引入对比 二、常识性概念图谱介绍 &#xff08;一&#xff09;常识性概念图谱关系图示例 &#xff08;二&#xff09…...

人人都是音乐家?腾讯开源音乐生成大模型SongGeneration

目录 前言 一、SongGeneration 带来了什么&#xff1f; 1.1 文本控制与风格跟随&#xff1a;你的想法&#xff0c;AI 精准实现 1.2 多轨生成&#xff1a;从“成品”到“半成品”的巨大飞跃 1.3 开源&#xff1a;推倒“高墙”&#xff0c;共建生态 二、3B 参数如何媲美商业…...

一,python语法教程.内置API

一&#xff0c;字符串相关API string.strip([chars])方法&#xff1a;移除字符串开头和结尾的空白字符&#xff08;如空格、制表符、换行符等&#xff09;&#xff0c;它不会修改原始字符串&#xff0c;而是返回一个新的处理后的字符串 chars&#xff08;可选&#xff09;&…...

python中学物理实验模拟:凸透镜成像和凹透镜成像

python中学物理实验模拟&#xff1a;凸透镜成像和凹透镜成像 凸透镜成像 凸透镜是指中间厚、边缘薄的透镜。它对光线有会聚作用&#xff0c;即光线通过凸透镜后会向主光轴方向偏折。 成像原理 基于光的折射&#xff0c;平行于主光轴的光线经凸透镜折射后会聚于焦点&#xff…...

【AGI】突破感知-决策边界:VLA-具身智能2.0

突破感知-决策边界&#xff1a;VLA-具身智能2.0 &#xff08;一&#xff09;技术架构核心&#xff08;二&#xff09;OpenVLA&#xff1a;开源先锋与性能标杆&#xff08;三&#xff09;应用场景&#xff1a;从实验室走向真实世界&#xff08;四&#xff09;挑战与未来方向&…...

2D曲线点云平滑去噪

2D曲线点云&#xff0c;含许多噪声&#xff0c;采用类似移动最小二乘的方法&#xff08;MLS)分段拟合抛物线并投影至抛物线&#xff0c;进行点云平滑去噪。 更通俗的说法是让有一定宽度的曲线点云&#xff0c;变成一条细曲线上的点。 分两种情况进行讨论&#xff1a; 1&#…...

靶场(二十一)---小白心得靶场体会---DVR4

先看端口&#xff0c;看到了一个dvr的服务&#xff0c;老规矩只要有服务就先去看看 PORT STATE SERVICE VERSION 22/tcp open ssh Bitvise WinSSHD 8.48 (FlowSsh 8.48; protocol 2.0; non-commercial use) | ssh-hostkey: | 3072 21:25:f0:53:b4…...

Qt + C++ 入门2(界面的知识点)

补充前面没有说到的一点就是&#xff0c;qt的页面你可以用qt自带的也就是前面所说的自动生成.UI文件生成前端所谓的界面&#xff0c;然后往里面拖控件就可以了&#xff0c;这个UI界面非常的适合用于新手&#xff0c;以及某些软件少量的界面应用 。但是有一个难点就是后期这个UI…...

计算机网络第九章——数据链路层《流量控制和可靠传输》

一、回顾概念 前面上一章讲了数据链路层的《差错控制》&#xff0c;那么回顾一下差错控制和可靠传输的区别&#xff1a; 差错控制&#xff1a;发现一个帧里的【位错&#xff08;比特错&#xff09;】 检错&#xff08;奇偶校验码、CRC循环冗余校验码&#xff09;&#xff1a;接…...

Zephyr 调试实用指南:日志系统、Shell CLI 与 GDB 全面解析

本文深入讲解 Zephyr 的调试利器&#xff0c;包括统一日志系统&#xff08;logging subsystem&#xff09;、内置命令行&#xff08;Shell CLI&#xff09;、与 GDB 调试集成方法&#xff0c;帮助开发者快速定位问题、分析运行时行为&#xff0c;实现高效开发与排障。 一、日志…...

【知识图谱提取】【阶段总结】【LLM4KGC】LLM4KGC项目提取知识图谱推理部分

文章目录 前言LLM4KGC的三个部分显卡使用效果前言 之前在学习基于大模型的知识图谱提取,就找到了LLM4KGC这个项目: 项目地址: https://github.com/ChristopheCruz/LLM4KGC/ 总体来说,这个项目没有什么比较高深的idea,年份也比较古老,但确实挺适合入手的。主要是绝对简…...

基于YOLO的智能车辆检测与记录系统

基于YOLO的智能车辆检测与记录系统 摘要 本报告总结了智能车辆检测系统的开发工作&#xff0c;主要包括车辆数据标注、YOLO模型训练及QT交互系统搭建三部分。通过使用专业标注工具完成车辆目标数据集的标注与预处理&#xff0c;基于YOLO模型构建车辆检测算法并优化训练流程&a…...

5.2 Qt Creator 使用FFmpeg库

一、目录结构 ├─3rdparty # 第三方依赖库 │ └─ffmpeg-4.4.3 # ffmpeg库 │ ├─mingw # 用MinGW64编译的库 │ │ ├─bin │ │ ├─include │ │ └─lib │ └─msvc # 用MSVC编译的库 │ ├─bin │ …...

C++基础练习 sort函数,用于排序函数

题目&#xff1a; https://acm.hdu.edu.cn/showproblem.php?pid2039 解答&#xff1a; #include <iostream> #include <cmath> #include <algorithm> using namespace std;double a[3]; int main(){int n;cin>>n;while(n--){cin>>a[0]>>…...

【Docker 08】Compose - 容器编排

&#x1f308; 一、Docker Compose 介绍 ⭐ 1. Docker Compose 是什么 Docker Compose 是由 Docker 官方提供的一个用于定义和运行多容器应用的工具&#xff0c;它让用户可以通过一个 YAML 文件&#xff08;通常是 docker-compose.yml&#xff09;来配置应用所需要的服务&…...

docker执行yum报错Could not resolve host: mirrorlist.centos.org

解决办法&#xff1a; -- 依次执行以下命令cd /etc/yum.repos.d/sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-*sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-*yum update -yecho "export LC_ALL…...

信贷域——信贷授信业务

摘要 本文详细介绍了信贷授信业务&#xff0c;包括其核心目标、典型流程、不同机构授信流程的对比、授信业务的其他类型以及授信模块的技术实现。信贷授信是金融机构在放贷前对客户信用额度的评估与审批流程&#xff0c;旨在控制风险、合理设定额度和期限、确保合规&#xff0…...

python的校园兼职系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

深度剖析 PACK_SESSIONID 实现原理与安全突破机制

&#x1f310; 深度剖析 PACK_SESSIONID 实现原理与安全突破机制 &#x1f5bc;️ 1. 完整数据处理流程 #mermaid-svg-TW7jVIcz81hCZVS9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-TW7jVIcz81hCZVS9 .error-ico…...

从0开始学习计算机视觉--Day02--数据驱动

上次我们在课程里了解到&#xff0c;亚马逊网站在当时构建了一个在那时候最大的供AI训练的数据集&#xff0c;为了推广这个测试&#xff0c;他们举办了比赛邀请了许多的参赛者&#xff0c;识别图片的标准是输出的类别中只要在前面五个里包含了正确答案就算识别成功。在这个过程…...

【LeetCode#第198题】打家劫舍(一维dp)

198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#…...

stm32串口(uart)2转发到串口(uart)3实现

今天博主在用kelil5写stm32的程序时遇到了一个全局变量因为在中断和任务切换时没有加 volatile 修饰&#xff0c;导致任务检测不到标志位变化&#xff0c;无法实现效果的问题。 全部代码&#xff1a; /* USER CODE BEGIN Header */ /***************************************…...

数据结构——函数填空题

链队出队入队 入队&#xff1a;新指针p赋给队尾的下一个&#xff0c;再赋给队尾 出队&#xff1a;队首指针赋给p&#xff0c;后移 p的下一个赋给队首指向的下一个 若队尾p&#xff0c;则证明首尾相连为1个 字符串匹配算法 二叉树 统计二叉树度为1的节点 树T为空&#xff0…...

什么是跨域问题?后端如何解决跨域问题?

跨域问题是指浏览器为了安全&#xff0c;对不同域&#xff08;包含不同协议、不同端口或不同主机名&#xff09;的请求进行限制&#xff0c;从而导致请求无法正常访问后端接口。 跨域问题的产生源于浏览器的同源策略&#xff08;Same-Origin Policy&#xff09;&#xff0c;这…...

使用ccs生成bin

CCS12.6 编译生成BIN文件正确方法_ccs生成bin文件-CSDN博客...

Python 邻接表详细实现指南

邻接表是图数据结构的一种高效表示方法&#xff0c;特别适合表示稀疏图。下面我将用 Python 详细讲解邻接表的多种实现方式、操作方法和实际应用。 一、邻接表基础概念 邻接表的核心思想是为图中的每个顶点维护一个列表&#xff0c;存储与该顶点直接相连的所有邻接顶点。 邻…...

FVISION 未来视界工作室:AI驱动的创新与智能外包平台

大家好&#xff0c;今天给大家介绍一个非常有意思的AI创新平台——FVISION 未来视界工作室。如果你正在寻找高效、智能、前沿的数字化工具和服务&#xff0c;这里一定有你想要的答案&#xff01; &#x1f31f; 平台简介 FVISION 未来视界工作室专注于AI驱动的创新应用开发&am…...

领域驱动设计(DDD)【3】之事件风暴

文章目录 说明一 事件风暴理论知识1.1 事件风暴的核心目标1.2事件风暴的关键步骤1.2.1 准备工作1.2.2 核心流程1.2.3 事件风暴的输出 1.3 事件风暴的优势1.4 常见问题Q1&#xff1a;事件风暴适合所有项目吗&#xff1f;Q2&#xff1a;事件风暴后如何落地&#xff1f;Q3&#xf…...

3.10 坐标导航

1.编写代码 新建文件nav_clienr.cpp编写代码 #include<ros/ros.h> #include<move_base_msgs/MoveBaseAction.h> #include<actionlib/client/simple_action_client.h>typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBas…...

TensorFlow 安装与 GPU 驱动兼容(h800)

环境说明TensorFlow 安装与 GPU 驱动兼容CUDA/H800 特殊注意事项PyCharm 和终端环境变量设置方法测试 GPU 是否可用的 Python 脚本 # 使用 TensorFlow 2.13 在 NVIDIA H800 上启用 GPU 加速完整指南在使用 TensorFlow 进行深度学习训练时&#xff0c;充分利用 GPU 能力至关重要…...

WPF调试三种工具介绍:Live Visual Tree、Live Property Explorer与Snoop

WPF调试工具详解&#xff1a;Live Visual Tree、Live Property Explorer与Snoop 1. Live Visual Tree (实时可视化树) 简介 Live Visual Tree是Visual Studio内置的WPF调试工具&#xff0c;允许开发者在应用程序运行时检查可视化树结构&#xff0c;查看控件的层次关系及其状态。…...

用OBS Studio录制WAV音频,玩转语音克隆和文本转语音!

言简意赅的讲解OBS Studio解决的痛点 随着AI技术的快速发展&#xff0c;语音克隆与文本生成语音技术越来越受欢迎。无论你想要制作个人虚拟主播&#xff0c;还是给自媒体视频配音&#xff0c;拥有高质量的原始音频都是关键。本文详细教你使用免费且功能强大的软件——OBS Stud…...

5.3 VSCode使用FFmpeg库

一、VSCMake 1.1 使用ffmpeg动态库 项目目录结构&#xff1a; ./ ├── 3rdparty # 第三方依赖库 │ └── ffmpeg_4.4.1 │ ├── include # 头文件 │ ├── lib # 静态库库 │ └── share ├── build # 编译目…...

【Datawhale组队学习202506】零基础学爬虫 02 数据解析与提取

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言2.1 概述2.2 re 解析2.3 bs4 解析2.4 xpath 解析总结 前言 Datawhale是一个专注于…...

[muduo] ThreadPool | TcpClient | 异步任务 | 通信测试

第九章&#xff1a;线程池&#xff08;ThreadPool&#xff09; 在第八章《TcpServer》中&#xff0c;我们了解到muduo::net::TcpServer通过EventLoop线程池处理入站连接。 这些EventLoop线程主要负责网络I/O&#xff1a;套接字读写和定时器处理&#xff0c;由Poller和Channel…...

探索 Vue 替代方案

Vue vs React vs Angular 在快速迭代的前端世界&#xff0c;Vue、React和Angular三大框架的竞争从未停止。2025年的今天&#xff0c;它们各自进化出了怎样的面貌&#xff1f;让我们深入剖析它们的核心差异&#xff0c;助你做出明智的技术选型。 Vue.js 完整的基于组件的UI框…...

大模型的开发应用(十二):RAG 与 LlamaIndex基础

这里写目录标题 1 LlamaIndex 简要介绍1.1 核心价值1.2 核心组件1.3 核心流程1.4 为什么要用 LlamaIndex&#xff1f;1.5 典型应用场景1.6 与类似工具对比1.7 安装1.8 学习资源 2 文档解析与 Document 对象2.1 示例文件与代码2.2 Document 对象的核心特性2.3 在 RAG 工作流程中…...

Java面试题025:一文深入了解数据库Redis(1)

欢迎大家关注我的JAVA面试题专栏&#xff0c;该专栏会持续更新&#xff0c;从原理角度覆盖Java知识体系的方方面面。 一文吃透JAVA知识体系&#xff08;面试题&#xff09;https://blog.csdn.net/wuxinyan123/category_7521898.html?fromshareblogcolumn&sharetypeblogco…...

Web攻防-XSS跨站Cookie盗取数据包提交网络钓鱼BEEF项目XSS平台危害利用

知识点&#xff1a; 1、Web攻防-XSS跨站-手工代码&框架工具&在线平台 2、Web攻防-XSS跨站-Cookie盗取&数据提交&网络钓鱼 演示案例-WEB攻防-XSS跨站-Cookie盗取&数据提交&网络钓鱼&Beef工具 1、XSS跨站-攻击利用-凭据盗取 条件&#xff1a;无防…...

(LeetCode 面试经典 150 题) 169. 多数元素(哈希表 || 二分查找)

题目&#xff1a;169. 多数元素 方法一&#xff1a;二分法&#xff0c;最坏的时间复杂度0(nlogn)&#xff0c;但平均0(n)即可。空间复杂度为0(1)。 C版本&#xff1a; int nnums.size();int l0,rn-1;while(l<r){int mid(lr)/2;int ans0;for(auto x:nums){if(xnums[mid]) a…...

71、单元测试-Junit5简介

71、单元测试-Junit5简介 # JUnit 5 简介 JUnit 5 是 Java 平台上最流行的单元测试框架之一&#xff0c;是 JUnit 的重大升级版本&#xff0c;引入了许多新特性和改进&#xff0c;旨在提供更现代化、灵活和强大的测试体验。 ## 主要组成部分 JUnit 5 由三个模块组成&#xff1a…...

IEC61850 一致性测试中的 UCA 测试

一、IEC61850 与 UCA 的关系背景 标准演进&#xff1a;IEC61850 是电力系统自动化领域的国际通信标准&#xff0c;其发展与美国 UCA&#xff08;User Communications Architecture&#xff09;标准密切相关。2001 年&#xff0c;UCA 国际用户组织与 IEC 合作&#xff0c;将 UC…...

ProtoBuf:proto3 语法详解

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;ProtoBuf 在语法详解部分&#xff0c;依旧使⽤项⽬推进的⽅式完成讲解。这个部分会对通讯录进⾏多次升级&#xff0c;使⽤2.x表⽰升级的版本&#xff0c;最终将会升级如下内容&#xff1a; 不再打…...

博图SCL语言GOTO语句深度解析:精准跳转

在SCL编程中&#xff0c;**GOTO语句**是控制流程的底层工具&#xff0c;它允许程序无条件跳转到指定的**标签位置**。虽然现代编程中较少使用&#xff0c;但在特定工业场景下仍能发挥独特价值。 GOTO语句核心机制 基本语法结构 // 定义标签 <标签名>: // 跳转指令 GOTO…...

面试题-在ts中有两个类型,一个是a,一个是b,这两个联合起来就是c,如何实现联合

在 TypeScript 中&#xff0c;若要将两个类型 a 和 b 联合成一个新类型 c&#xff0c;可以使用 联合类型&#xff08;Union Type&#xff09; 或 交叉类型&#xff08;Intersection Type&#xff09;&#xff0c;具体取决于你的需求&#xff1a; 一、联合类型&#xff08;Unio…...

Mac电脑-触摸板增强工具-BetterTouchTool

BetterTouchTool mac 触摸板增强工具&#xff0c;允许用户使用各种手势来控制其计算机。 Bettertouchtool mac是一个小而高效的macOS应用程序&#xff0c;旨在帮助您为手势定义快捷方式。 此外&#xff0c;Bettertouchtool可用于使用常规鼠标和键盘快捷键&#xff0c;并提供伴…...