数组——对数组进行更加全面的理解

1.数组的概念

数组是一组相同类型元素的集合。数组可分为一维数组和多维数组,多维数组常见的是二维数组。

2.一维数组的创建和初始化

2.1 数组的创建

一维数组的创建的基本语法是:

type arr_name[常量值]

例如,我们现在想要存储某个班级的20人的数学成绩,我们可以创建数组:

#include<stdio.h>
int main()
{//数组int math[20];return 0;
}

当然,我们也可以创建其他类型的数组。

char ch[8];
double score[10];

 2.2 数组的初始化

数组的初始化一般用大括号,且在默认条件下,数组中的元素为0。

//例如
//完全初始化
int arr[5] = { 1, 2, 3, 4, 5 };
//不完全初始化
int arr[6] = { 1 };

3.一维数组的使用 

3.1 数组下标 

C语言规定,数组的下标是从0开始的,如果数组中有n个元素,则最后一个元素的下标是n-1.

 

3.2 数组元素的打印 

我们可以运用for循环来进行数组元素的打印

#include<stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };for (int i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}

 结果为:

3.3 数组的输入 

我们也可以用scanf语句来实现数组的输入

#include<stdio.h>
int main()
{int arr[10] = { 0 };//初始化int i = 0;for (i = 0; i < 10; i++){scanf("%d", &arr[i]);}for (i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}

 4.一维数组在内存中的储存

我们通过运行结果来进行分析

#include<stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };int i = 0;for (i = 0; i < 10; i++){printf("&arr[%d] = %p\n",i, &arr[i]);}return 0;
}

 通过运行结果我们可以看出:数组在内存中是连续存放的

 5.二维数组的创建

如果我们把一维数组作为数组的元素,这时候就是二维数组,二维数组作为元素的数组就是三维数组,二维数组以上的数组统称为多维数组。

5.1 二维数组的创建

type arr_name[常量值1][常量值2];

5.2 二维数组的初始化 

#include<stdio.h>
int main()
{//不完全初始化int arr1[3][5] = { 1,2 };int arr2[3][5] = { 0 };//完全初始化int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };return 0;
}

也可以这样写,为按行初始化 

int arr4[3][5] = { {1,2},{3,4},{5,6} };

 切记的是,初始化时可以省略行,但是不能省略列!

6.二维数组的使用

在C语言中规定,二维数组中的行和列均是从0开始。

例如:

int arr[3][5] = { 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7 };

 

 所以只要知道行标和列标就可以准确找到对应元素。

6.1 二维数组的输入和输出

#include<stdio.h>
int main()
{int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };int i = 0;int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 5; j++){scanf("%d", &arr[i][j]);}}for (i = 0; i < 3; i++){for (j = 0; j < 5; j++){printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

 输出结果为:

7.二维数组在内存中的存储 

#include<stdio.h>
int main()
{int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };int i = 0;int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 5; j++){printf("&arr[%d][%d] = %p\n",i, j, &arr[i][j]);}}return 0;
}

 运行结果为:

 从运行结果中我们可以看到,二维数组中的每个元素也是连续存放的。

8.C99中的变长数组

C99中给一个变长数组的新特性, 允许我们使用变量指定数组大小。

例如:

int n = a + b;
int arr[n];

变长数组的根本特征就是数组长度只有运行时才能确定,所以,变长数组不能进行初始化

 在VS2022上不支持变长数组的使用。

 

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

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

相关文章

一拖三无线充底座-带给你极致的便利生活

随着科技的不断进步&#xff0c;无线充电技术已经逐渐渗透到我们日常生活的方方面面&#xff0c;一拖三无线充底座作为其中的佼佼者&#xff0c;以其高效、便捷的特点受到广大用户的青睐。本文将从电磁感应原理、多线圈设计、频率匹配、电能传输、功率分配以及充电管理六个方面…

原生PHP/JS自主开发的交友内核框架婚恋交友系统V10

本文来自&#xff1a;婚恋交友系统V10 - 源码1688 应用介绍 原生PHP/JS自主开发的交友内核框架&#xff0c;极高性能、无捆绑、自主权、无流水扣点、独立全开源 01脱单盲盒&#xff1a;脱单盲盒类似于漂流瓶&#xff0c;先将自己《投放》到盲盒中&#xff0c;另一伴有缘将您取…

【链表OJ】常见面试题 2

文章目录 1.[链表分割](https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId8&&tqId11004&rp2&ru/activity/oj&qru/ta/cracking-the-coding-interview/question-ranking)1.1 题目要求1.2 哨兵位法 2.[链表的回文结构](https://www.…

Shell编程 --流程控制

Shell编程 Shell是一种程序设计语言。作为命令语言&#xff0c;它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令&#xff1b;作为程序设计语言&#xff0c;它定义了各种变量和参数&#xff0c;并提供了许多在高级语言中才具有的控制结构&#…

跨optimistic rollup原子互操作:Shared Validity Sequencing

1. 引言 Succinct Labs团队CEO和CTO&#xff0c;以及Ellipsis Labs合伙人一起&#xff0c;于2023年6月22日发布博客 Shared Validity Sequencing&#xff0c;认为&#xff1a; 以太坊扩容的未来之一就是拥有成千上万个 rollup。 如今&#xff0c;主流的 rollup 都是 optimis…

Unity3D 物体圆周运动

Unity3D 实现一个 2D 物体沿着圆周进行运动。 物体圆周运动 前段时间在开发一个小游戏时&#xff0c;需要实现火箭沿着一个圆形轨道进行圆周运动。 以前面试的时候也被问到过这类问题&#xff08;如何让一个 2D 物体做圆周运动&#xff09;&#xff0c;所以还是记录一下实现…

【区块链】控制台的配置、操作及常用命令②

常用命令-账户管理 常用命令-区块信息 在控制台中编译部署智能合约 启动节点 在fisco目录下 bash nodes/127.0.0.1/start_all.sh启动控制台 cd ~/fisco/console && bash start.sh部署合约 deploy HelloWorldtransaction hash: 交易的哈希值 contract address&#x…

Linux:基础操作指令

Linux的操作特点&#xff1a;纯命令行&#xff08;虽然也有图形化界面&#xff0c;但主要是工程师使用&#xff0c;意义不大&#xff09; windows的操作特点&#xff1a;图形化界面&#xff08;也有纯命令行的形式&#xff0c;但其更贴近大众&#xff0c;命令行学习成本高&…

Android之复制文本(TextView)剪贴板

效果图&#xff1a; 功能简单就是点击“复制”&#xff0c;将邀请码复制到 剪贴板中 布局 <androidx.constraintlayout.widget.ConstraintLayoutandroid:id"id/clCode"android:layout_width"dimen/dp_0"android:layout_height"dimen/dp_49"…

LTrack:实现夜间多目标追踪,并开放低光多目标追踪数据集LMOT

摘要 低光场景在现实应用中很常见&#xff08;例如&#xff0c;夜间的自动驾驶和监控&#xff09;。最近&#xff0c;多目标跟踪在各种实际用例中受到了很多关注&#xff0c;但黑暗场景中的多目标跟踪却很少被考虑。在本文中&#xff0c;我们专注于黑暗场景中的多目标跟踪。为…

Java | Leetcode Java题解之第313题超级丑数

题目&#xff1a; 题解&#xff1a; class Solution {public int nthSuperUglyNumber(int n, int[] primes) {int[] dp new int[n 1];int m primes.length;int[] pointers new int[m];int[] nums new int[m];Arrays.fill(nums, 1);for (int i 1; i < n; i) {int minN…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第五篇 文件系统构建篇-第七十四章 buildroot构建文件系统

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

CnosDB 元数据集群 – 分布式时序数据库的大脑

CnosDB 是一个分布式时序数据库系统&#xff0c;其中元数据集群是核心组件之一&#xff0c;负责管理整个集群的元数据信息。 1. 概述 CnosDB 是一个分布式时序数据库系统&#xff0c;其中元数据集群是核心组件之一&#xff0c;负责管理整个集群的元数据信息。元数据包括数据库…

回文链表(Leetcode)

题目 给你一个单链表的头节点 &#xff0c;请你判断该链表是否为 回文链表。如果是&#xff0c;返回 &#xff1b;否则&#xff0c;返回 。 解题 class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextdef isPalindrome(head: ListNode) -> …

rpc框架怎么使用

这是我们提供RPC的服务类&#xff1a; class MprpcApplication { public:static void Init(int argc, char **argv);static MprpcApplication& GetInstance();static MprpcConfig& GetConfig(); private:static MprpcConfig m_config;MprpcApplication(){}MprpcApplica…

【数据结构】栈的概念、结构和实现详解

本文来介绍一下数据结构中的栈&#xff0c;以及如何用C语言去实现。 1. 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;它只允许在固定的一端进行插入和删除元素的操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。 栈中元素遵循后进先出…

API 接口设计原则:RESTful 与 GraphQL

RESTful 接口 REST 的全称是 REpresentational State Transfer&#xff0c;是一种 Web API 的设计风格 RESTful API 设计 6 大原则 一个 RESTful 风格的接口应该满足如下的 6 点原则&#xff1a; 统一接口&#xff1a;For example, the HTTP-based REST APIs make use of th…

OpenCV及rembg去除图像背景

OpenCV去除图像背景 去除图像背景&#xff0c;需要综合使用二值化&#xff08;thresholding&#xff09;、腐蚀&#xff08;erosion&#xff09;、膨胀&#xff08;dilation&#xff09;以及位运算&#xff08;bitwise operations&#xff09;&#xff0c;代码如下&#xff1a…

【启明智显方案分享】6.86寸高清显示屏音频效果器解决方案

一、项目概述 本方案旨在设计一款集成6.86寸高清触摸显示屏的音频效果器&#xff0c;通过HMI&#xff08;Human-Machine Interface&#xff09;芯片Model 4驱动&#xff0c;实现高清晰度的视觉交互。该设备不仅支持音乐、麦克风及温响音量的精细控制&#xff0c;还内置丰富的预…

Mybatis学习-day18

Mybatis学习-day18 数据持久化是将内存中的数据模型转换为存储模型&#xff0c;以及将存储模型转换为内存中数据模型的统称。例如&#xff0c;文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。 MyBatis 支持定制化 SQL、存储过程以及高级映射&#xff0c…