大话C语言:第21篇 数组
1 数组概述
数组是若干个相同类型的变量在内存中有序存储的集合。
-
数组是 C 语言中的一种数据结构,用于存储一组具有相同数据类型的数据。
-
数组在内存中会开辟一块连续的空间
-
数组中的每个元素可以通过一个索引(下标)来访问,索引从 0 开始,最大值为数组长度减 1。
2 数组分类
2.1 元素的类型分类
-
字符数组:即若干个char变量的集合,数组中的每个元素都是字符型的变量。例如,char s[10]; s[0],s[1]....s[9];
-
短整型的数组:即若干个short类型变量的集合,数组中的每个元素都是字符型的变量。例如,short int a[10]; a[0] ,a[9]; a[0]=4;a[9]=8;
-
整型的数组:即若干个int类型变量的集合,数组中的每个元素都是int型的变量。例如,int a[10]; a[0] a[9]; a[0]=3;a[9]=6;
-
长整型的数组:即若干个long类型变量的集合,数组中的每个元素都是long型的变量。例如,long a[10]; a[0] a[9]; a[0]=3;a[9]=6;
-
浮点型的数组:即若干个float类型变量的集合,数组中的每个元素都是float型的变量。例如,float a[10]; a[0] a[9]; a[0]=3.14;a[9]=6.8;
-
指针数组,例如,int *a[10];
-
结构体数组,例如,struct stu boy[10]。
2.2 维数分类
-
一维数组,例如,int a[30];类似于一排平房
-
二维数组,例如,int a[2] [2];可以看成一栋楼房 有多层,每层有多个房间,也类似于数学中的矩阵二维数组可以看成由多个一维数组构成的。
-
多维数组,例如,int a[4] [2] [10];三维数组是由多个相同的二维数组构成的。
3 数组的定义
3.1 一维数组
一维数组的语法格式:
类型 数组名[元素个数];
// 例如,int arr[5];
注意,
-
数组名不能与其它变量名相同,同一作用域内是唯一的
-
下标从0开始计算,因此5个元素分别为arr[0],arr[1],arr[2],arr[3],arr[4]
#include <stdio.h>int main()
{// 定义了一个数组,名字叫a,有10个成员,每个成员都是int类型int a[10]; // a[0]…… a[9],没有a[10]// 没有a这个变量,a是数组的名字,但不是变量名,它是常量a[0] = 0;// ……a[9] = 9;// 数据越界,超出范围,错误// a[10] = 10; // errfor (int i = 0; i < 10; i++){a[i] = i; // 给数组赋值}// 遍历数组,并输出每个成员的值for (int i = 0; i < 10; i++) {printf("%d ", a[i]);}printf("\n");return 0;
}
数组的初始化:
-
在定义数组的同时进行赋值,称为初始化
-
全局数组若不初始化,编译器将其初始化为零
-
局部数组若不初始化,内容为随机值
// 定义一个数组,同时初始化所有成员变量
int a1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 初始化前三个成员,后面所有元素都设置为0
int a2[10] = { 1, 2, 3 }; // 所有的成员都设置为0
int a3[10] = { 0 }; // []中不定义元素个数,定义时必须初始化
int a4[] = { 1, 2, 3, 4, 5 }; // 定义了一个数组,有5个成员
核心概念:数组名,它是一个地址的常量,代表数组中首元素的地址。
#include <stdio.h>int main()
{// 定义一个数组,同时初始化所有成员变量int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 数组名是一个地址的常量,代表数组中首元素的地址printf("a = %p\n", a);printf("&a[0] = %p\n", &a[0]);int n = sizeof(a); // 数组占用内存的大小,10个int类型,10 * 4 = 40int n0 = sizeof(a[0]); // 数组第0个元素占用内存大小,第0个元素为int,4int num = n / n0; // 元素个数printf("n = %d, n0 = %d, num = %d\n", n, n0, num);return 0;
}
3.2 二维数组
二维数组的语法格式:
数据类型 数组名[行的个数][列的个数];
注意:二维数组的下标也是可以省略的,但是有条件,在初始化时行数可以省略,但是列数不能省略。
//定义一个二维数组
int c[2][4];
printf("sizeof(c) = %d %d\n", sizeof(c), 2 * 4 * sizeof(int));//二维数组的行数可以省略,但是列数不能省略,在初始化时可以这样操作
//系统会根据列数自动指定行数,最终得到的函数所得到的元素个数移动是列的整数倍
int d[][4] = {1, 2, 3, 4, 5};
printf("sizeof(d) = %d\n", sizeof(d));
数组的初始化:
-
按行初始化,例如,
// 声明并初始化
int a[2][2] = {{1,2},{4,5}}; // 先声明,再初始化
int a[2][2];
a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 4;
a[1][1]=5;
-
逐个初始化,例如,
int a [2] [3]={2,5,4,2,3,4};
综合案例:
#include <stdio.h>int main(int argc, char *argv[])
{//二维数组的初始化//int a[2][3];//初始化方式1:按行初始化//全部初始化//int a[2][3] = {{10, 20, 30}, {666, 777, 888}};//局部初始化//没有赋值的位置的元素自动为0//int a[2][3] = {{10, 20}, {666}};//初始化方式2:逐个初始化//全部初始化//int a[2][3] = {1, 2, 3, 4, 5, 6};//局部初始化//没有赋值的位置的元素自动为0int a[2][3] = {1, 2, 3};printf("%d\n", a[0][0]);printf("%d\n", a[0][1]);printf("%d\n", a[0][2]);printf("%d\n", a[1][0]);printf("%d\n", a[1][1]);printf("%d\n", a[1][2]);return 0;
}
核心概念:二维数组元素的引用方法,数组名[行下标] [列下标];
#include <stdio.h>int main(int argc, char *argv[])
{//一维数组的引用以及一维数组的遍历int a[6] = {111, 222, 333, 444, 555, 666};a[3] = 10000;//一维数组的遍历int i;for(i = 0; i < sizeof(a) / sizeof(int); i++){printf("a[%d] = %d\n", i, a[i]);}printf("**********************\n");//二维数组的引用以及二维数组的遍历int b[3][4] = {1, 2, 3, 4, 23 5, 6, 7, 8, 24 9, 10, 11, 12};b[2][0] = 666;//二维数组的遍历int m, n;//外层循环控制行数for(m = 0; m < 3; m++){//内层循环控制列数for(n = 0; n < 4; n++){printf("%‐4d", b[m][n]);}printf("\n");}return 0;
}
相关文章:

大话C语言:第21篇 数组
1 数组概述 数组是若干个相同类型的变量在内存中有序存储的集合。 数组是 C 语言中的一种数据结构,用于存储一组具有相同数据类型的数据。 数组在内存中会开辟一块连续的空间 数组中的每个元素可以通过一个索引(下标)来访问,索…...

transfomer中attention为什么要除以根号d_k
简介 得到矩阵 Q, K, V之后就可以计算出 Self-Attention 的输出了,计算的公式如下: A t t e n t i o n ( Q , K , V ) S o f t m a x ( Q K T d k ) V Attention(Q,K,V)Softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)Softmax(dk QKT)V 好处 除以维…...

iperf3带宽压测工具使用
iperf3带宽压测工具使用 安装下载地址:[下载入口](https://iperf.fr/iperf-download.php)测试结果:时长测试(压测使用):并行测试反向测试UDP 带宽测试 iPerf3 是用于主动测试 IP 网络上最大可用带宽的工具 安装 下载地址&#x…...

[数据集][目标检测]焊接处缺陷检测数据集VOC+YOLO格式3400张8类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3400 标注数量(xml文件个数):3400 标注数量(txt文件个数):3400 标注…...
2024华为OD机试真题-剩余银饰的重量-C++(C卷D卷)
题目描述 有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。 每一回合,从中选出三块 最重的 银饰,然后一起熔掉。假设银饰的重量分别为 x 、y 和 z, 且 x <= y <= z。那么熔掉的可能结果如下: 如果x == y == z,那么三…...

糖果促销【百度之星】/思维
糖果促销 思维 大佬的解法: #include<bits/stdc.h> using namespace std; typedef long long ll; int main() {ll t;cin>>t;for(int i0;i<t;i){ll p,k;cin>>p>>k;if(k0) cout<<0<<endl;else{k-(k-1)/p;cout<<k<…...

【python学习】安装Anaconda后,如何进行环境管理(命令行操作及图形化操作Anaconda Navigator)及包管理
命令行的方式 首先,打开 Anaconda Powershell Prompt 环境查看 使用以下命令查看当前所有环境: conda env list目前只有一个 base环境,就是安装 anaconda的时候选择的。 光标在闪烁,目前已经进入 base 环境模式: …...

HTML大雪纷飞
目录 写在前面 HTML简介 完整代码 代码分析 运行结果 系列文章 写在后面 写在前面 小编又又又出现啦!这次小编给大家带来大雪纷飞HTML版,不需要任何的环境,只要有一个浏览器,就可以随时随地下一场大雪哦! HTM…...

问界新M7 Ultra仅售28.98万元起,上市即交付
5月31日,问界新M7 Ultra正式上市。发布会上,鸿蒙智行旗下多款产品交出最新答卷——问界新M5上市1个月大定突破2万台;智界S7位列30万纯电轿车4月交付量NO.3;问界M9上市5个月大定突破9万台。其中,作为中国高端豪华SUV市场…...

【Java数据结构】详解LinkedList与链表(四)
🔒文章目录: 1.❤️❤️前言~🥳🎉🎉🎉 2.什么是LinkedList 3.LinkedList的使用 3.1LinkedList的构造方法 3.2LinkedList的其他常用方法介绍 addAll方法 subList方法 LinkedList的常用方法总使…...

ssm汉服文化平台网站
博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

如何让 LightRoom 每次导入照片后不自动弹出 SD 卡 LR
如何让 LightRoom 每次导入照片后不自动弹出 SD 卡 LR 在导入窗口左上角有个选项: 导入后弹出 把这个去掉就可以了...
elasticdump和ESM
逐个执行如下命令; 1.拷贝analyzer如分词(需要分词器,可能不成功,不影响复制) ./elasticdump --inputhttp://[来源IP地址]:9200/[来源索引] --outputhttp://[目标IP地址]:9200/[目标索引] --typeanalyzer 2.拷贝映射…...

Java扩展机制:SPI与Spring.factories详解
一、SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不…...
iPhone 语言编程:深入探索与无限可能
iPhone 语言编程:深入探索与无限可能 在数字化时代的浪潮中,iPhone 作为一款全球领先的智能手机,其语言编程的奥秘一直吸引着众多开发者与爱好者的目光。iPhone 的语言编程不仅关乎技术实现,更涉及到用户体验、创新应用等多个层面…...

css动态导航栏鼠标悬停特效
charset "utf-8"; /*科e互联特效基本框架CSS*/ body, ul, dl, dd, dt, ol, li, p, h1, h2, h3, h4, h5, h6, textarea, form, select, fieldset, table, td, div, input {margin:0;padding:0;-webkit-text-size-adjust: none} h1, h2, h3, h4, h5, h6{font-size:12px…...
Vue中使用axios先获取头像上传参数然后上传图片到服务器-demo
这是一个使用axios发送POST请求上传图片到AWS S3的代码。其中: 引入了axios、FormData和fs模块;创建FormData实例,向其中添加上传图片的相关信息;创建axios请求的配置对象config,包含url、method、headers和data等属性…...

Win11环境下Android Studio中Flutter开发环境构建(逐步解决)
flutter开发环境构建 1. Flutter开发环境搭建1.1 Android Studio1.2 flutter下载flutter设置环境变量增加国内镜像 1.3 flutter doctorAndroid toolchain:cmdline-tools component is missingAndroid toolchain:Some Android licenses not acceptedChrom…...
Thread Servlet思考
在开发过程中我们经常会遇到两个对象分别是Thread和Servlet。但是很少会考虑到两者之前的关系。 Thread是线程,在tomcat服务器中请求被接收后,会启动线程对请求进行处理。线程会通过run方法执行实际执行的业务逻辑。在tomcat中当请求请求到线程池后&…...

电源滤波器怎么选用
电源滤波器怎么选用 滤波器应用场景及作用第一步:第二步:第三步:第四步: 滤波器应用场景及作用 可以有效解决EMC测试无法通过、端口防护、滤除干扰、设备保护等问题 主要功能有: 1、降低主电源谐波; 2、保护驱动装置电力电子元件…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
漏洞概述 漏洞名称:Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号:CVE-2023-25194 CVSS评分:8.8 影响版本:Apache Kafka 2.3.0 - 3.3.2 修复版本:≥ 3.4.0 漏洞类型:反序列化导致的远程代…...

第2课 SiC MOSFET与 Si IGBT 静态特性对比
2.1 输出特性对比 2.2 转移特性对比 2.1 输出特性对比 器件的输出特性描述了当温度和栅源电压(栅射电压)为某一具体数值时,漏极电流(集电极电流...

python学习day39
图像数据与显存 知识点回顾 1.图像数据的格式:灰度和彩色数据 2.模型的定义 3.显存占用的4种地方 a.模型参数梯度参数 b.优化器参数 c.数据批量所占显存 d.神经元输出中间状态 4.batchisize和训练的关系 import torch import torchvision import torch.nn as nn imp…...

timestamp时间戳转换工具
作为一名程序员,一款高效的 在线转换工具 (在线时间戳转换 计算器 字节单位转换 json格式化)必不可少!https://jsons.top 排查问题时非常痛的点: 经常在秒级、毫秒级、字符串格式的时间单位来回转换,于是决定手撸一个…...

奈飞工厂官网,国内Netflix影视在线看|中文网页电脑版入口
奈飞工厂是一个专注于提供免费Netflix影视资源的在线播放平台,致力于为国内用户提供的Netflix热门影视内容。该平台的资源与Netflix官网基本同步,涵盖电影、电视剧、动漫和综艺等多个领域。奈飞工厂的界面简洁流畅,资源分类清晰,方…...