【013】C++数组之一维数值数组和二维数值数组的概念和操作方法

引言


💡 作者简介:专注分享高性能服务器后台开发技术知识,涵盖多个领域,包括C/C++、Linux、网络协议、设计模式、中间件、云原生、数据库、分布式架构等。目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。公众号《Lion 莱恩呀》。
👉
🎖️ CSDN实力新星、专家博主,阿里云博客专家、华为云云享专家
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu


🔔 上一篇:【012】细数C++循环控制:for、while、do-while,看看你掌握了多少?
🔔 下一篇:【014】C++数组之一维字符数组和二维字符数组

一、一维数值数组

1.1、概念

用一段连续的空间存放相同类型的变量,这样的容器(结构)叫做数组。

在C++中,一维数值数组是一种由相同类型的元素组成的线性数据结构。每个元素都可以通过下标访问,并且所有元素按照它们在数组中出现的顺序排列。

在C++中声明一维数值数组的语法如下:

type arrayName[arraySize];

其中,type表示数组元素类型,arrayName为数组名称,arraySize表示数组大小。

例如,可以声明一个包含5个整型元素的一维数值数组:

int arr[5];

这将创建一个名为arr的整型数组,其大小为5。我们可以通过下标访问每个元素,例如:

arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;

这样就把1到5分别赋值给了这个整型数组的前五个元素。
在这里插入图片描述

需要注意的是,在C++中数组下标从0开始而不是从1开始。也就是说,第一个元素对应下标0,第二个对应下标1,以此类推。

1.2、一维数值数组的定义

步骤:

  1. 数组名和 [] 表示数组。
  2. 将数组的个数放入[]中。
  3. 用元素类型定义一个变量。

数组的大小定义时必须指定,并且不可更改。

以下是定义一维数值数组的示例代码:

int arr[5]; // 定义一个包含5个整型元素的数组
float floatArr[10]; // 定义一个包含10个单精度浮点型元素的数组
double doubleArr[] = {1.2, 3.4, 5.6, 7.8}; // 不指定数组大小,直接用花括号赋值
char charArr[100] = "Hello World"; // 定义一个包含100个字符元素的数组,并初始化为字符串"Hello World"

以上示例中,第一个和第二个示例分别定义了一个整型和单精度浮点型的一维数值数组。第三个示例使用了花括号对数组进行初始化,编译器会自动计算出该数组大小为4。最后一个示例定义了一个包含100个字符元素的一维字符数组,并将其初始化为字符串"Hello World"。

需要注意的是,在定义一维数值数组时,如果未对其进行初始化,则其中每个元素都将被默认初始化为其类型的默认值。例如,对于整型而言,默认值为0。

在这里插入图片描述

1.3、一维数值数组的初始化

(1)全部元素初始化。

int arr[5]={10,20,30,40,50};

如果数组的全部元素都初始化,可以省略[]的数值。如果省略[]中的数字,数组元素个数就由初始化元素个数确定,例如:

int arr[]={10,20,30};// 三个元素

(2)部分元素初始化。未初始化的部分自动补0。

int arr[5]={10,20,30};//10,20,30,0,0

(3)建议将数组的所有元素初始化为0。

int arr[5]={0};// 将第一个元素初始化为0,其他元素自动补0

(4)指定元素初始化。

int arr[5]={[1]=10,[3]=20};// 0,10,0,20,0

1.4、一维数值数组的元素操作

在数组中,每个元素都是按照顺序编号的,并且可以通过下标访问它们。以下是一些常用的一维数组元素操作:

  1. 定义数组。定义一个包含n个元素的整型数组arr,可以使用如下代码:

    int arr[n];
    
  2. 初始化数组。定义数组之后,可以对其进行初始化。有两种方式:

    • 手动初始化:依次给每个元素赋值。

      int arr[5] = {1, 2, 3, 4, 5};
      
    • 自动初始化:如果只给部分元素赋值,则未赋值的元素会自动被初始化为0。

      int arr[5] = {1, 2}; // 前两个元素为1和2,后三个元素自动初始化为0
      
  3. 访问数组元素:可以使用下标(从0开始)访问数组中指定位置的元素。

    int a = arr[0]; // 访问第一个元素
    arr[3] = 10;    // 将第四个元素赋值为10
    
  4. 获取数组长度:使用sizeof运算符可获取整个数组占用内存大小(单位为字节)。若要获取实际包含的数据量,需要将总字节数除以单个数据类型所占字节数。

    int len = sizeof(arr) / sizeof(int); // 数组长度为5
    
  5. 遍历数组:可以使用for循环遍历整个数组。

    for (int i = 0; i < n; i++) {
        cout << arr[i] << endl;
    }
    

1.5、使用示例

从键盘中输入10个int数,求这10个数的最大值和最小值。

#include <iostream>
using namespace std;

int main()
{
	int arr[10];
	int n=sizeof(arr)/sizeof(arr[0]);
	int i=0;
	cout<<"请输入"<<n<<"个数值:";
	for(i=0;i<n;i++)
	{
		cin>>arr[i];
	}
	// 求最大值和最小值
	int min,max;
	min=max=arr[0];
	for(i=1;i<n;i++)
	{
		if(max<arr[i])
			max=arr[i];
		if(min>arr[i])
			min=arr[i];
	}
	cout<<"最大值:"<<max<<", 最小值:"<<min<<endl;
	return 0;
}

二、二维数值数组

2.1、概述

C++中的二维数组是一个由多个一维数组组成的矩阵结构,可以用来表示表格、图像等具有二维结构的数据。在二维数组中,每个元素都需要使用两个下标来确定其位置。例如,arr[i][j]表示第i行第j列的元素。
在这里插入图片描述
二维数值数组的特性:

  • 二维数组的总大小 = 行数 * 列数 * 每个元素的大小。即sizeof(arr)。
  • 行数=sizeof(arr)/sizeof(arr[0])。
  • 列数=sizeof(arr[0])/sizeof(arr[0][0])。

定义一个包含n行m列的整型二维数组arr,可以使用如下代码:

int arr[n][m];

2.2、二维数值数组的初始化

(1)分段初始化。

// 完全初始化
int arr[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
// 完全初始化也可以省略行数
int arr2[][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
// 部分初始化
int arr3[3][4]={{1,2,3},{1,2},{0}};

(2)连续初始化。

// 完全初始化
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
// 完全初始化也可以省略行数
int arr2[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
// 部分初始化,其他自动补零
int arr[3][4]={1,2,3,4,5,6,7};

(3)从另一个角度上看,与一维数组类似,也可以分为手动或自动初始化一个二维数组。

  • 手动初始化:需要按行依次给每个元素赋值。

    int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    
  • 自动初始化:如果只给部分元素赋值,则未赋值的元素会自动被初始化为0。

    int arr[3][4] = {{1, 2}, {5}, {9}}; // 部分元素被赋值为非零值,其他自动初始化为0
    

2.3、二维数值数组的元素操作

  1. 访问二维数组元素。可以使用两个下标(从0开始)访问二位数组中指定位置的元素。

    int a = arr[0][0]; // 访问第一行第一列的元素
    arr[1][2] = 10;    // 将第二行第三列的元素赋值为10
    
  2. 获取二维数组的大小。可以使用sizeof运算符获取整个二维数组占用内存大小。要获取实际包含数据量,需要将总字节数除以单个数据类型所占字节数。

    int size = sizeof(arr) / sizeof(int); // 数组大小为 n * m * sizeof(int)
    
  3. 遍历二维数组。可以使用双重循环遍历整个二维数组。

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    

2.4、使用示例

统计学生中每个人的平均成绩。
在这里插入图片描述

#include <iostream>
using namespace std;

int main()
{
	int arr[5][4]={
		{56,75,78,89},
		{89,98,76,67},
		{88,99,77,66},
		{67,78,89,90},
		{98,97,96,95}
	};
	int row=sizeof(arr)/sizeof(arr[0]);
	int col=sizeof(arr[0])/sizeof(arr[0][0]);

	int i=0,j=0;
	for(i=0;i<row;i++)
	{
		float sum=0.0f;
		for(j=0;j<col;j++)
		{
			sum+=arr[i][j];
		}
		cout<<"student "<<i+1<<" 的成绩总分:"<<sum<<endl;
		cout<<"student "<<i+1<<" 的成绩平均分:"<<sum/col<<endl;
	}
	return 0;
}

三、总结

C++中的数组是一种常用的数据结构,可以用来存储和操作多个相同类型的变量。在C++中,一维数组和二维数组是最常见的两种数组类型。

  • 一维数组:一维数组是由一个固定长度的、连续的、相同类型的元素序列组成。它可以表示向量、字符串等单行单列的数据集合。

  • 二维数组:二维数组是由固定大小、连续的、相同类型的元素序列组成,它可以表示矩阵、表格等具有行列结构的数据集合。

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lion Long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值