11、数组

1、数组概念

        数组就是存储多个相同数据类型的数据。

        比如:存储26个字母,存储一个班级的学生成绩。

2、数组使用

       数组要遵循先定义再使用        

        2.1、数组定义的格式        

                存储数据---空间  ---- 数据类型

                多少个 --- 数据个数

                >> 数据类型 数组名[数据个数];

                标识符: 数字 字母 _ $

                               不能以数字开头  

                                不能和关键字重复

                例:

                       a、 存储班级的平均分--班级有20个人

                                存储数据 -- 成绩 --- float

                                数据个数:20

                                float scores[20];

                  

                        b、定义一个数组用来存放班级同学的年龄,班级有5个同学

                                int  a[5];

                                 

        

        2.2、数组的下标

                定义数组后,数组会为空间进行编号,从0开始,到数据个数-1 ---- 规定

                用数组的时候切记不要超标

       2.3、数组空间访问

                数组名[下标]                

                ------------------------------------------------------------------------------------------

                | // 数组定义 -[总个数]     |      // 数组使用 --- [下标]                            |

                ------------------------------------------------------------------------------------------

                | int a[5];                         |      // a[0]  a[1]  a[2]  a[3]  a[4]  ---- int        |

                ------------------------------------------------------------------------------------------

                练习:

                        需求:定义一个存放5个int型数据的数组,对空间进行赋值操作,然后将数据从空间里面读取出来。 

#include<stdio.h>

int main(void)
{
	int a[5];
		
	a[0] = 10;
	a[1] = 20;
	a[2] = 90;
	a[3] = 45;
	a[4] = 5;
	
	// 把数组中的所有数据输出一下
	printf("%d ",a[0]);
	printf("%d ",a[1]);
	printf("%d ",a[2]);
	printf("%d ",a[3]);
	printf("%d ",a[4]);
	
	return 0;
} 

                          改进1:对数组里面的数据进行求和。        

#include<stdio.h>

int main(void)
{
	int a[5];
		
	a[0] = 10;
	a[1] = 20;
	a[2] = 90;
	a[3] = 45;
	a[4] = 5;
	
	// 把数组中的所有数据输出一下
	printf("%d ",a[0]);
	printf("%d ",a[1]);
	printf("%d ",a[2]);
	printf("%d ",a[3]);
	printf("%d ",a[4]);
	
	int res;
	res = a[0] + a[1] + a[2] + a[3] + a[4];		
	printf("数据之和为:%d\n",res);
	
	return 0;
} 

                        改进2:使用循环对数组的数据访问进行从挨揍,下标是连续的

#include<stdio.h>

int main(void)
{
	int a[5];
		
	a[0] = 10;
	a[1] = 20;
	a[2] = 90;
	a[3] = 45;
	a[4] = 5;
	
	// 把数组中的所有数据输出一下
	int i;
	for(i=0;i<5;i++)
	{
		printf("%d ",a[i]);
	} 
	
	printf("\n");
	
	int res;
	for(i=0;i<5;i++)
	{
		res = res + a[i];
	} 	
	printf("数据之和为:%d\n",res);
	
	return 0;
} 
        2.4、数组初始化

                初始化就是定义时候给值

                int a[5] = {1,7,9,10,20};

                int b[5] = {1,2,3};         // {1,2,3,0,0}初始化的时候没有赋值的空间补0

                int c[5] = {1,2,3,4,5,6,7}; // {1,2,3,4,5} 初始化超出部分舍弃

                // 省略个数的初始化,后面{}有几个值就开几个空间

                int d[] = {1,2,3};    //int d[3] = {1,2,3};

                错误:不要写 不要写 不要写!!!!

                        int e[];  //定义的时候不能省略,不然不知道开多少空间

                        int f[] = {};  // 不会开空间

                        int t[] = {0}; // 开1个空间 ,没有必要用数组了

                注意:数组只能在初始化的时候整体赋值。

                        int a[5];

                        a = {1,2,3,4,5}; // 错误的,数组名是一个常量 0x0062fe50

                练习:

                        对初始化的数组进行访问

#include<stdio.h>

int main(void)
{
	int a[5] = {1,7,9,10,20};
	
	// 0 1 2 3 4
	int i; // 下标
	for(i=0;i<5;i++)
	{
		// i
		printf("%d ",a[i]);
	} 	 
	
	return 0;
}
        2.5、数组要素分析

                数组中数据的类型(元素类型):除了数组名[数据个数] 剩下的就是里面存放的数据的类型

                数组的类型:                除了 数组名  剩下的就是数组的类型

                        数组名:                数组名称[]前面的

3、二维数组        

        可以理解为存放多个同种类型的一维数组,理解按照行和列来理解二维数组

        先定义再使用的原则

        

        3.1、二维数组定义


            数据类型 数组名[总行数][总列数];
    
            例:
                a、定义一个二维数组,用来存放2个int [5]的数据        
                    int arr[2][5];
                b、定义一个二维数组,用来存储5个人名
                    分析:
                        1个人名是1个字符串 -- 1个字符数组,假设人名最多占20个字符
                        5个人名是5个字符串 --5个字符数组,可以理解为开5行字符串空间,每行20个字符

                    char names[5][20];

        3.2、二维数组使用   

                行下标:0 ~ 总行数-1

                列下表:0 ~ 总列数-1

                数据名称:数组名[行下标][列下标]

                数据地址:&数组名[行下标][列下标]

                例:

                        定义一个2行5列存储int型数据的二维数据,对数组中的int型空间进行读写操作。

#include<stdio.h>

int main(void)
{
	int arr[2][5];
		
	arr[0][0] = 10;
	arr[0][1] = 20;
	arr[0][2] = 60;
	arr[0][3] = 40;
	arr[0][4] = 90;
	
	arr[1][0] = 100;
	arr[1][1] = 7;
	arr[1][2] = 39;
	arr[1][3] = 50;
	arr[1][4] = 89;
	
	printf("第0行数据:"); 
	printf("%d ",arr[0][0]);
	printf("%d ",arr[0][1]);
	printf("%d ",arr[0][2]);
	printf("%d ",arr[0][3]);
	printf("%d ",arr[0][4]);
	
	printf("\n");
	
	printf("第1行数据:"); 
	printf("%d ",arr[1][0]);
	printf("%d ",arr[1][1]);
	printf("%d ",arr[1][2]);
	printf("%d ",arr[1][3]);
	printf("%d ",arr[1][4]);
	
	printf("\n");	
	
	return 0;
}

                        改进:使用循环操作二维数组的读写操作。

#include<stdio.h>

int main(void)
{
	int arr[2][5];
		
	arr[0][0] = 10;
	arr[0][1] = 20;
	arr[0][2] = 60;
	arr[0][3] = 40;
	arr[0][4] = 90;
	
	arr[1][0] = 100;
	arr[1][1] = 7;
	arr[1][2] = 39;
	arr[1][3] = 50;
	arr[1][4] = 89;
	
	int i,j;
	for(i=0;i<2;i++)
	{
		printf("第%d行数据:",i); 
		for(j=0;j<5;j++)
		{
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}

4、数组名是数组首元素的地址

        数组名是数组首元素的地址,说的是数组名在使用的时候某些情况下可以当做它首元素的地址来看,他们类型一致,数值也一致。如果实二维数组需要分层来看。

        ​​​​​​​        ​​​​​​​                

#include<stdio.h>

int main(void)
{
	int a1[5];
	
	printf("%p %p\n",a1,&a1[0]);  // 0062FE8C   0062FE8C
	
	int a2[2][5];
	
	printf("%p %p\n",a2,&a2[0]);        // 0062FE64 0062FE64 
	printf("%p %p\n",a2[0],&a2[0][0]);  // 0062FE64 0062FE64 
	printf("%p %p\n",a2[1],&a2[1][0]);  // 0062FE78 0062FE78 	
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/926193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C底层 函数栈帧

文章目录 一&#xff0c;什么是寄存器 二&#xff0c;栈和帧 前言 我们在学习c语言程序的时候&#xff0c;是不是有很多的疑问&#xff0c;如 1&#xff0c;为什么形参不可以改变实参 2&#xff0c;为什么我们编写程序的时候会出现烫烫烫......这个乱码 3&#xff0c;那些局…

MATLAB期末复习笔记(二)

三、MATLAB函数和程序结构 1.MATLAB文件 两种类型的M文件&#xff1a; • 脚本 &#xff0c;不接受输入参数或返回输出参数。它们处理工作区中的数据。 • 函数 &#xff0c;可接受输入参数&#xff0c;并返回输出参数。内部变量是函数的局部变量。 ① 函数文件是另一类 m 文…

redis的应用----缓存

redis的应用----缓存 一、缓存的概念二、使用redis作为缓存2.1使用redis作为缓存的原因2.2缓存机制的访问步骤 三、缓存的更新策略3.1定期更新3.2实时更新3.3淘汰策略 四、缓存常见的问题4.1缓存预热(Cache preheating)4.2缓存穿透(Cache penetration)4.3缓存雪崩(Cache avalan…

2025年Java面试八股文大全

很多人会问Java面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。 国内的互联网面试&#xff0c;恐怕是现存的、最接近科举考试的制度。 而且&#xff0c;我国的八股文确…

JiaJia-CP-1,2,3的WP(2)

一.JiaJia-CP-2 一看题目&#xff0c;聊天软件&#xff0c;用的什么聊天软件直接userassist看运行过什么程序 vol -f JiaJia_Co.raw --profileWin7SP1x64 userassist 发现Telegram.exe(小飞机) 可能性很大啊(真是个摸鱼大神) 除此之外&#xff0c;filescan也能看到&#xff0…

小F的矩阵值调整

问题描述 小F得到了一个矩阵。如果矩阵中某一个格子的值是偶数&#xff0c;则该值变为它的三倍&#xff1b;如果是奇数&#xff0c;则保持不变。小F想知道调整后的矩阵是什么样子的。 测试样例 样例1&#xff1a; 输入&#xff1a;a [[1, 2, 3], [4, 5, 6]] 输出&#xff1a…

Docker Buildx 与 CNB 多平台构建实践

一、Docker Buildx 功能介绍 docker buildx 是 Docker 提供的一个增强版构建工具&#xff0c;支持更强大的构建功能&#xff0c;特别是在构建多平台镜像和高效处理复杂 Docker 镜像方面。 1.1 主要功能 多平台构建支持 使用 docker buildx&#xff0c;可以在单台设备上构建…

uni-app 使用笔记

1.缓存用法 &#xff08;1&#xff09;uni-app 存值取值删除 官网&#xff1a;https://uniapp.dcloud.net.cn/api/storage/storage.html#setstorage 存值 uni.setStorageSync(storage_key, hello);取值 uni.getStorageSync(storage_key)删除 uni.removeStorageSync(storag…

Unity的GPU Instancing技术

首先新建一个场景&#xff0c;添加一个相机&#xff0c;并创建一个Render Texture给相机。 然后在相机上挂载以下脚本TestBatches &#xff0c;同时脚本的Inspector面板的Mesh中选择Cube&#xff0c;另外创建一个新的材质拖动给mat&#xff1a; public class TestBatches : M…

你真的会用饼图吗?JVS-智能BI饼图组件深度解析

在数据可视化的世界里&#xff0c;饼图是我们常见的一种可视化图形。在JVS-智能BI中提供了数据可视化饼图组件&#xff0c;接下来我通过这篇文章详细介绍&#xff0c;从配色方案到图形配置&#xff0c;从显示数据到提示信息&#xff0c;饼图的每一个细节配置。 饼图类图表概述…

IOS ARKit进行图像识别

先讲一下基础控涧&#xff0c;资源的话可以留言&#xff0c;抽空我把它传到GitHub上&#xff0c;这里没写收积分&#xff0c;竟然充值才能下载&#xff0c;我下载也要充值&#xff0c;牛&#xff01; ARSCNView 可以理解画布或者场景 1 配置 ARWorldTrackingConfiguration AR追…

golang debug调试

1. 本地调试 1&#xff1a;Add Configurations 添加配置文件&#xff08;Run kind &#xff1a;Directory&#xff09; 2&#xff1a;进入run运行窗口 3&#xff1a;debug断点调试模式 1. Resume Program (继续运行) 图标: ▶️ 或 ► 快捷键: F9&#xff08;Windows/Linux&a…

联想YOGA Pro 14s至尊版电脑找不到独立显卡(N卡)问题,也无法安装驱动的问题

问题描述 电脑是联想YOGA Pro 14s至尊版&#xff0c;电脑上装的独立显卡是4060&#xff0c;一直是能够使用独立显卡的。然而有两次突然就找不到显卡了&#xff0c;NVIDIA CONTROL PANEL也消失了&#xff0c;而且也无法安装驱动。具体表现如下&#xff1a; 无法连接外接显示器…

Python酷库之旅-第三方库Pandas(250)

目录 一、用法精讲 1181、pandas.tseries.offsets.BusinessMonthEnd.is_on_offset方法 1181-1、语法 1181-2、参数 1181-3、功能 1181-4、返回值 1181-5、说明 1181-6、用法 1181-6-1、数据准备 1181-6-2、代码示例 1181-6-3、结果输出 1182、pandas.tseries.offse…

【机器学习】机器学习的基本分类-监督学习-逻辑回归-Sigmoid 函数

Sigmoid 函数是一种常用的激活函数&#xff0c;尤其在神经网络和逻辑回归中扮演重要角色。它将输入的实数映射到区间 (0, 1)&#xff0c;形状类似于字母 "S"。 1. 定义与公式 Sigmoid 函数的公式为&#xff1a; 特点 输出范围&#xff1a;(0, 1)&#xff0c;适合用…

点云处理中obb算法原理和法向量求解方法

主要数学原理PCA PCA&#xff08;Principal Component Analysis&#xff0c;主成分分析&#xff09;是数据分析中的一种重要技术&#xff0c;通过它可以将高维数据投影到低维空间&#xff0c;找到数据的主要结构。在点云分析中&#xff0c;PCA 可以帮助我们提取点云数据中的主…

四:工具、环境准备-compute node

一&#xff1a;工具、环境准备-controller node 二&#xff1a;OpenStack环境准备-controller node 三&#xff1a;安装服务-controller node 四&#xff1a;工具、环境准备-compute node 五&#xff1a;OpenStack环境准备-compute node 六&#xff1a;安装服务-compute node 七…

力扣1382:将二叉搜索树便平衡

给你一棵二叉搜索树&#xff0c;请你返回一棵 平衡后 的二叉搜索树&#xff0c;新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法&#xff0c;请你返回任意一种。 如果一棵二叉搜索树中&#xff0c;每个节点的两棵子树高度差不超过 1 &#xff0c;我们就称这棵二…

NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比

NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测&#xff0c;含优化前后对比 目录 NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测&#xff0c;含优化前后对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介…

微信小程序Webview与H5通信

背景 近期有个微信小程序需要用到web-view嵌套H5的场景&#xff0c;该应用场景需要小程序中频繁传递数据到H5进行渲染&#xff0c;且需要保证页面不刷新。 由于微信小程序与H5之间的通信限制比较大&#xff0c;显然无法满足于我的业务场景 探索 由于微信小程序与webview的环境是…