首页 > 其他分享 >数组的学习

数组的学习

时间:2024-09-05 20:20:40浏览次数:7  
标签:arr int 元素 学习 索引 二维 数组

1.一维数组

在C语言中,数组的声明格式为:类型名 数组名[数组长度];例如:int numbers[5]; 表示声明了一个包含5个整数的数组。

数组的元素可以通过索引来访问,索引从0开始计数。例如,要访问数组numbers中的第一个元素,可以使用numbers[0]。

一维数组的初始化主要需要注意字符数组的初始化,如下:

#include<stdio.h>
int main()
{
	char ch1[4] = { 'a','b','c' };
	char ch2[4] = "abc";
	char ch3[] = { 'a','b','c' };
	char ch4[] = "abc";

	return 0;
}

这里定义了4个字符型数组,打开监视功能可获取这些数组的初始化内容,如下所示:

观察数组ch1和ch2初始化内容一致,但数组ch3和ch4存放的内容不同,这是因为字符串是以字符“\0”为结束字符存放的,这里初始化时需要注意。

数组可以进行遍历操作,通过循环结构来依次访问数组的每个元素。例如,可以使用for循环来遍历数组中的所有元素。如下所示:

#include<stdio.h>
int main()
{
	int arr[] = { 0,1,3,4,6,9,5,7 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;

	for (i = 0;i < sz;i++)
	{
		printf("%d ", arr[i]);
        printf("&arr[%d]=%p\n", i, &arr[i]);
	}
	return 0;
}

运行结果如下:

2.二维数组

C语言中的二维数组是一种特殊的数组,它可以存储多行多列的元素。二维数组可以理解为一个表格,其中每个元素都有行索引和列索引。

在C语言中,二维数组的声明格式为:类型名 数组名[行数][列数];例如:int matrix[3][4]; 表示声明了一个包含3行4列的整数二维数组。

二维数组的元素可以通过两个索引来访问,第一个索引代表行索引,第二个索引代表列索引。例如,要访问二维数组matrix中的第一行第二列的元素,可以使用matrix[0][1]。

二维数组的元素可以通过赋值来初始化,或者在声明时指定初始值。例如,int matrix[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 表示声明了一个3行4列的整数二维数组,并将其初始化为指定的值。

二维数组可以进行遍历操作,通过嵌套循环来遍历数组的每个元素。外层循环用于遍历行,内层循环用于遍历列。例如,可以使用两个嵌套的for循环来遍历二维数组中的所有元素。如下所示:

#include<stdio.h>
int main()
{
	int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	int i = 0;
	for (i = 0;i < 3;i++)
	{
		int j = 0;
		for (j = 0;j < 4;j++)
		{
			printf("%-2d ", arr[i][j]);//%-2d表示左对齐
		}
		printf("\n");
	}
	return 0;
}

 运行结果如下:

输出二维数组中每个元素的地址,如下:

从上面可以看出,C语言中的二维数组实际上是一维数组的数组,即每个元素都是一个一维数组。因此,二维数组在内存中是连续存储的,与一维数组存储方式一致,每个一维数组的长度可以不同。

需要注意的是,C语言中的二维数组不会进行边界检查,因此在使用二维数组时要注意避免越界访问。

标签:arr,int,元素,学习,索引,二维,数组
From: https://blog.csdn.net/NJL12138/article/details/141901948

相关文章

  • 基于SpringBoot+Vue+Uniapp的大学生党务知识学习微信小程序
    文章目录前言详细视频演示论文参考具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我自己的网站([小蔡coding](https://xiaocaicoding.cn/))代码参考数据库参考源码获取前言......
  • C++学习笔记----6、内存管理(二)---- 数组指针的双向性
            你可能已经看到指针与数组之间的一些重叠。自由内存空间分配的数组由其第一个元素的指针进行访问。栈上的数组通过使用数组语法([])或者正常变量声明来访问。你还会看到的是,其重叠不仅如此,指针与数组有更复杂的关系。1、数组退化至指针        自由内......
  • C#/.NET/.NET Core优质学习资料,干货收藏!
    前言今天大姚给大家分享一些C#/.NET/.NETCore优质学习资料,希望可以帮助到有需要的小伙伴。什么是.NET?.NET是一个免费的、跨平台的、开源开发人员平台,用于构建许多不同类型的应用程序。使用.NET,可以使用多种语言、编辑器和库来构建Web、移动、桌面、游戏和IoT等。一......
  • 【机器学习】梯度提升和随机森林的概念、两者在python中的实例以及梯度提升和随机森林
    引言梯度提升(GradientBoosting)是一种强大的机器学习技术,它通过迭代地训练决策树来最小化损失函数,以提高模型的预测性能随机森林(RandomForest)是一种基于树的集成学习算法,它通过组合多个决策树来提高预测的准确性和稳定性文章目录引言一、梯度提升1.1基本原理1.1.1......
  • 【机器学习】模型性能与可解释性的矛盾以及如何提高可解释性和模型性能
    引言文章目录引言一、模型性能与可解释性的矛盾1.1矛盾的一些关键点1.1.1模型性能1.2可解释性1.3矛盾点1.3.1复杂性与简单性1.3.2黑盒模型1.3.3业务需求1.3.4合规性和责任1.4解决方案1.4.1使用可解释的模型1.4.2模型简化1.4.3后验可解释性技术1.4.4模型......
  • 5.数组
    MODULE5 数组1.数组的特点以及定义2.数组的操作(存数据,取数据,遍历数据)3.二维数组(定义,存,取,遍历)4.知道内存中的:堆,栈一、数组的定义1.问题:如果我们想存储一个数组,我们可以使用变量,但是变量一次只能存储一 个数据,所以我们想能不能一次存储多个数据2.数组概述:是一个容器,数组本身属......
  • 终于使用c++、结构体,函数实现简单数组元素的插入
    includeusingnamespacestd;//定义结构体structMyArray{intarr[100];//数组,假设最大长度为100intn;//数组当前元素数量};//输入函数voidscanf(MyArray&myArray,int&x,int&y){cin>>myArray.n;for(inti=0;i<myArray.n;i++){cin>>my......
  • Java中多态的学习
    多态目录多态多态的概念为什么要使用多态多态存在的三个必要条件多态的实现方式多态的分类方式一方式二多态的机制原理多态的概念多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。为什么要使用多态消除类型之间的耦......
  • 二维数组根据某个字段去重并统计个数
    publicfunctioncensus(){$data=$this->request->post("params/a");//$data=[//['name'=>'Alice','specId'=>25],//['name'......
  • 图形学学习(二):Shader输入输出及自制Shader类
    在LearnOpengl学了Shader的输入输出和自制Shader类,输入输出还是好理解的,自制Shader类的讲解我感觉还是用代码更直观一些(个人感觉),这两天看了一下秋招的面试面经,想了想明年找工作的问题,刺激,十分感慨,优秀的人还是太多了,不过最重要的还是得做好自己!!!Shader的输入输出总结有两种......