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 4int i; // 下标for(i=0;i<5;i++){// iprintf("%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   0062FE8Cint 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六、文本搜索工具(grep)和正则表达式

一、grep工具的使用 1、概念 grep&#xff1a; 是 linux 系统中的一个强大的文本搜索工具&#xff0c;可以按照 正则表达式 搜索文本&#xff0c;并把匹配到的行打印出来&#xff08;匹配到的内容标红&#xff09;。 2、语法 grep [options]…… pattern [file]…… 工作方式…

【python】爬去二手车数据 未完成

技术方案 python selenium 先下载Microsoft Edge WebDriver Microsoft Edge WebDriver 官网 先看一下自己的edge版本 搜索到版本然后下载自己的版本 安装依赖 pip install seleniumimport time from selenium import webdriverdriver webdriver.Edge(executable_pathr&qu…

玩游戏常常出现vc++runtime library error R6025 这是什么意思,该怎么解决?

当玩游戏时常常出现“vc runtime library error R6025”错误&#xff0c;这通常表明微软C开发运行库组件存在问题。以下是对该错误及其解决方法的详细解释&#xff1a; 错误含义 “vc runtime library error R6025”是一个与Visual C运行时库相关的错误&#xff0c;该错误表明…

C++设计模式:桥接模式(Bridge)

什么是桥接模式&#xff1f; 桥接模式&#xff08;Bridge Pattern&#xff09;是一个用来解耦的设计模式&#xff0c;它将抽象层和实现层分离开&#xff0c;让它们可以独立变化。用最简单的话来说&#xff0c;就是让你能够改变抽象的功能和具体的实现&#xff0c;而不需要修改…

【深度学习基础】一篇入门模型评估指标(分类篇)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 模…

深度学习基础02_损失函数BP算法(上)

目录 一、损失函数 1、线性回归损失函数 1.MAE损失 2.MSE损失 3.SmoothL1Loss 2、多分类损失函数--CrossEntropyLoss 3、二分类损失函数--BCELoss 4、总结 二、BP算法 1、前向传播 1.输入层(Input Layer)到隐藏层(Hidden Layer) 2.隐藏层(Hidden Layer)到输出层(Ou…

从技术视角看AI在Facebook全球化中的作用

在全球化日益加深的今天&#xff0c;人工智能&#xff08;AI&#xff09;作为一种变革性技术&#xff0c;正在深刻影响全球互联网巨头的发展方向。Facebook作为全球最大的社交媒体平台之一&#xff0c;正通过AI技术突破语言、文化和技术的障碍&#xff0c;推动全球化战略的实现…

41 基于单片机的小车行走加温湿度检测系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采样DHT11温湿度传感器检测温湿度&#xff0c;滑动变阻器连接数码转换器模拟电量采集传感器&#xff0c; 电机采样L298N驱动&#xff0c;各项参数通过LCD1602显示&#x…

OkHttp3 - 2. OkHttp的核心组件与架构

1 OkHttp的工作原理 OkHttp3 的核心设计遵循以下原则&#xff1a; 请求与响应的分离&#xff1a;通过 Request 和 Response 对象解耦请求构建与结果处理。异步与同步支持&#xff1a;使用 Call 对象管理请求&#xff0c;可以同步或异步执行。高效连接复用&#xff1a;通过连接…

Python3 爬虫 Scrapy的使用

安装完成Scrapy以后&#xff0c;可以使用Scrapy自带的命令来创建一个工程模板。 一、创建项目 使用Scrapy创建工程的命令为&#xff1a; scrapy startproject <工程名> 例如&#xff0c;创建一个抓取百度的Scrapy项目&#xff0c;可以将命令写为&#xff1a; scrapy s…

好文推荐——sympy化简表达式高级处理——「SymPy」符号运算(2) 各种形式输出、表达式的化简合并与展开

「SymPy」符号运算(2) 各种形式输出、表达式的化简合并与展开 「SymPy」符号运算(2) 各种形式输出、表达式的化简合并与展开_sympy解方程怎么格式化输出-CSDN博客

12 设计模式之工厂方法模式

一、什么是工厂方法模式&#xff1f; 1.定义 在软件开发中&#xff0c;设计模式 是解决常见软件设计问题的最佳实践。而 工厂方法模式&#xff08;Factory Method Pattern&#xff09; 作为创建型设计模式之一&#xff0c;常常被用来解决对象创建问题。它通过将对象的创建交给…

【S500无人机】--地面端下载

之前国庆的时候导师批了无人机&#xff0c;我们几个也一起研究了几次&#xff0c;基本把无人机组装方面弄的差不多了&#xff0c;还差个相机搭载&#xff0c;今天我们讲无人机的调试 硬件配置如下 首先是地面端下载&#xff0c;大家可以选择下载&#xff1a; Mission Planne地…

Android -- 简易音乐播放器

Android – 简易音乐播放器 播放器功能&#xff1a;* 1. 播放模式&#xff1a;单曲、列表循环、列表随机&#xff1b;* 2. 后台播放&#xff08;单例模式&#xff09;&#xff1b;* 3. 多位置同步状态回调&#xff1b;处理模块&#xff1a;* 1. 提取文件信息&#xff1a;音频文…

架构师的英文:Architect

中文版 软件架构师 的英文是 “Software Architect”。 Software: 软件Architect: 架构师&#xff0c;通常指的是设计和规划某种系统或结构的人。 Software Architect 通常负责软件系统的整体设计、技术选型、架构规划&#xff0c;确保系统的可扩展性、可维护性和高效性等。…

常用端口与Udp协议

目录 1.再谈端口 1.1 五元组 1.2 端口号范围划分 1.3 两个指令 1.3.1 netstat 1.3.2 pidof 2.UDP协议 2.1 协议整体格式 2.2 udp特点 2.3 udo缓冲区 1.再谈端口 1.1 五元组 端口号表示了一个主机上进行通信的不同的应用程序&#xff1b;在Tcp/IP协议中&#xff0c;用…

计算机毕业设计SpringCloud+大模型微服务高考志愿填报推荐系统 高考大数据 SparkML机器学习 深度学习 人工智能 Python爬虫 知识图谱

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Unity3D开发VisonPro交互Demo 像果冻QQ弹弹

视频教程地址 VisonPro开发交互Demo 果冻QQ弹弹 Unity Vision Pro 中文课堂教程地址&#xff1a; Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂

C/C++ 数据结构与算法【线性表】 顺序表+链表详细解析【日常学习,考研必备】带图+详细代码

1&#xff09;线性表的定义 线性表&#xff08;List&#xff09;&#xff1a;零个或多个数据元素的有限序列。 线性表的数据集合为{a1,a2,…,an}&#xff0c;假设每个元素的类型均为DataType。其中&#xff0c;除第一个元素a1外&#xff0c;每一个元素有且只有一个直接前驱元素…

搭建AD域服务器

搭建AD域服务器 使用深信服HCI搭建AD域服务器 1、新建虚拟机 2、填写参数 3、省略安装过程 4、进入服务器管理器 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、 21、 22、 23、