【013】C++数组之一维数值数组和二维数值数组

这篇具有很好参考价值的文章主要介绍了【013】C++数组之一维数值数组和二维数值数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言


💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。
👉
🎖️ CSDN实力新星,社区专家博主
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu


🔔 上一篇:【011】

一、一维数值数组

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分别赋值给了这个整型数组的前五个元素。
【013】C++数组之一维数值数组和二维数值数组

需要注意的是,在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。

【013】C++数组之一维数值数组和二维数值数组

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];
  1. 初始化数组。定义数组之后,可以对其进行初始化。有两种方式:
  • 手动初始化:依次给每个元素赋值。
int arr[5] = {1, 2, 3, 4, 5};
  • 自动初始化:如果只给部分元素赋值,则未赋值的元素会自动被初始化为0。
int arr[5] = {1, 2}; // 前两个元素为1和2,后三个元素自动初始化为0
  1. 访问数组元素

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

int a = arr[0]; // 访问第一个元素
arr[3] = 10;    // 将第四个元素赋值为10
  1. 获取数组长度

使用sizeof运算符可获取整个数组占用内存大小(单位为字节)。若要获取实际包含的数据量,需要将总字节数除以单个数据类型所占字节数。

int len = sizeof(arr) / sizeof(int); // 数组长度为5
  1. 遍历数组

可以使用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列的元素。
【013】C++数组之一维数值数组和二维数值数组
二维数值数组的特性:

  • 二维数组的总大小 = 行数 * 列数 * 每个元素的大小。即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
  1. 获取二维数组的大小。可以使用sizeof运算符获取整个二维数组占用内存大小。要获取实际包含数据量,需要将总字节数除以单个数据类型所占字节数。
int size = sizeof(arr) / sizeof(int); // 数组大小为 n * m * sizeof(int)
  1. 遍历二维数组。可以使用双重循环遍历整个二维数组。
for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        cout << arr[i][j] << " ";
    }
    cout << endl;
}

2.4、使用示例

统计学生中每个人的平均成绩。
【013】C++数组之一维数值数组和二维数值数组

#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++中,一维数组和二维数组是最常见的两种数组类型。

  1. 一维数组

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

  • 定义:使用数据类型和元素个数定义一个数组。
int arr[5]; // 定义包含5个整型元素的一维数组
  • 初始化:手动或自动初始化一个数组。
int arr[5] = {1, 2, 3, 4, 5}; // 手动初始化
int arr[5] = {};              // 自动初始化为0
  • 访问:使用下标访问指定位置的元素。
int a = arr[0];    // 获取第一个元素
arr[1] = 10;       // 将第二个元素赋值为10
  • 遍历:使用循环遍历整个数组。
for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
}
  1. 二维数组

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

  • 定义:使用数据类型和行列数定义一个二维数组。
int arr[3][4]; // 定义包含3行4列整型元素的二维数组
  • 初始化:手动或自动初始化一个二维数组。
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; // 手动初始化
int arr[3][4] = {};                                           // 自动初始化为0
  • 访问:使用两个下标访问指定位置的元素。
int a = arr[0][0];    // 获取第一行第一列的元素
arr[1][2] = 10;       // 将第二行第三列的元素赋值为10
  • 遍历:使用双重循环遍历整个二维数组。
for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        cout << arr[i][j] << " ";
    }
    cout << endl;
}

【013】C++数组之一维数值数组和二维数值数组文章来源地址https://www.toymoban.com/news/detail-460692.html

到了这里,关于【013】C++数组之一维数值数组和二维数值数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言中一维数组及二维数组的运用

    int * p  = arr; int * q = arr[1]; 其中arr是数组名,代表了整个数组的首元素地址,这个是一个常量,放在常量存储区,所以在给int*p赋值的时候可以不用带,而下面的arr[1]则代表数组里的某一个元素,所以在赋值时要加上  有个例题: 下列运行结果  解析:首先看main函数里的第二

    2024年02月13日
    浏览(35)
  • 【C语言】利用数组处理批量数据(一维数组和二维数组)

    前言 :在前面学习的程序中使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。对于简单的问题,使用这些简单的数据类型就可以了。但是对于有些需要处理的数据,只用以上简单的数据类型是不够的,难以反映出数据的特点,也难以有

    2024年02月08日
    浏览(42)
  • 头歌——一维数组和二维数组全对答案秒过

    我相信大家都会,只是整个乱七八糟的事太多了,发布这个文章的目的不是让你去抄袭,而是去学习,不要说我传播啊,服了这个文章建议怎么还不消掉,难道他看出我在摸鱼了吗?虽然我现在就两个粉丝,嗯,这几天可以看出我更新不是很积极,主要是一直再写学生管理系

    2024年02月04日
    浏览(31)
  • 065:vue中将一维对象数组转换为二维对象数组

    第065个 查看专栏目录: VUE ------ element UI 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,upda

    2024年02月02日
    浏览(26)
  • 《C语言深度解剖》(4):深入理解一维数组和二维数组

    🤡博客主页:醉竺 🥰 本文专栏: 《C语言深度解剖》 😻 欢迎关注: 感谢大家的点赞评论+关注,祝您学有所成! ✨✨💜💛想要学习更多 数据结构与算法 点击专栏链接查看💛💜✨✨   数组是一组相同类型元素的集合。 数组的创建方式:  数组创建的实例:  注:数组

    2024年04月09日
    浏览(74)
  • C语言中函数返回数组(一维和二维)

    C语言中函数返回数组是很重要的一种应用,有时候在程序中调用函数返回数组可以更容易的实现我们想要的某些操作,比如一次返回多个值,这篇文章带来的是C语言中函数返回一维数组和二维数组的例子。 函数返回一维数组中需要注意的是:定义函数时需要在函数类型的后

    2024年02月04日
    浏览(37)
  • 从二维数组到一维数组——探索01背包问题的动态规划优化

    本文将继续上一篇博客爬楼梯之后继续讲解同样用到了动态规划的 01背包问题 在解决动态规划问题时,我们经常面临着空间复杂度的挑战。01背包问题是一个典型的例子,通常使用二维数组来表示状态转移,但这样会带来额外的空间开销。在本文中,我们将探讨如何通过优化

    2024年04月11日
    浏览(49)
  • C语言例题(二维数组)【转置矩阵】【成绩登记】【斐波那契】【简单矩阵查找】【螺旋数阵】【一维数组转二维数组】

    例一:转置矩阵 程序: 输出:通过b[j][i] = a[i][j];这一步实现了转置 进阶:用6个1~20内的随机数按行的顺序生成一个a[2][3]的矩阵,并输出它的转置矩阵 输出: 例2.登记某班三人的数学、英语两门课程的成绩。 分析:此类问题可以通过使用3个一维数组来解决,也可以通过使用

    2024年02月03日
    浏览(32)
  • 【C语言基础入门】二级指针、一维数组与指针、二维数组与指针

    在学习C语言的过程中,理解指针的概念是非常重要的。指针提供了一种直接访问内存地址的方式,使得我们可以更加灵活地管理数据和内存。在本文中,我们将介绍C语言中的二级指针、一维数组与指针,并通过通俗易懂的语言和示例代码来帮助读者理解这些概念。 二级指针

    2024年02月05日
    浏览(43)
  • C语言问题 - 关于一维数组和二维数组用*a+i形式表达

    今天在编写程序时被一个语句搞懵了: 输出结果: 把我搞懵的是*(pa + k) = *(a + i) + j; (其实真的很简单的道理还一直在纠结。。。) 其实这句话就是指(对等号左右边语句分别解释): 每次循环 pa+k都会让pa指针都会向下移动一格,而加上星号*就是为了取指针所指的值,而

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包