C++数组

导语

最近出了趟门,所以停更了一段时间,今天我们来学习C++的数组。

一维数组

C++中的一维数组是一种存储同类型数据的线性结构,可以通过下标访问其中的元素。最好定义在程序的外面。以下是一些关于C++一维数组的详细解释:

1. 声明和初始化数组:

数组的声明方式为:类型名 数组名[数组大小];

例如: int arr[5];

数组的初始化方式可以采用以下两种方式:

(1) 声明时初始化,如: int arr[5] = {1, 2, 3, 4, 5};

(2) 在程序运行时初始化,如: int arr[5]; arr[0] = 1; arr[1] = 2; ...

2. 访问数组元素:

使用下标(从0开始)可以访问数组中的元素。例如: int a[5]; a[0] = 1;

3. 数组长度:

数组的长度可以通过 sizeof() 操作符求得。例如: int a[5]; sizeof(a) 返回的是20,即5 * sizeof(int)。

4. 数组作为函数参数:

数组可以作为函数参数传递,但是需要指明数组的长度,一般采用以下两种方式:

(1) int func(int a[], int len);  //a为数组,len为数组长度

(2) int func(int* a, int len);  //a为指向数组首元素的指针,len为数组长度

5. 数组内存分配:

C++中的数组在定义时就已经分配了内存空间,如果需要动态分配内存,可以用 new 和 delete 运算符。

总的来说,一维数组是C++中常用的数据结构之一,它提供了一种方便的方式存储和访问同类型的数据。

以下是用数数C++代码示例:

#include<bits/stdc++.h> 
using namespace std;
int main(){
    char str[100];
    cout << "请输入一个字符串:" << endl;
    cin >> str;
	int len = strlen(str);
	cout << "您输入的字符串为:" << str << endl;
    cout << "字符串的长度为:" << len << endl;
    cout << "字符串的每个字符为:" << endl;

    for(int i = 0; i < len; i++){
        cout << str[i] << " ";
    }
	return 0;
}

在这个示例中,我们定义了一个大小为100的字符数组str来存储用户输入的字符串。然后使用strlen()函数获取字符串的长度,遍历每个字符并输出。这里需要注意的是,需要在输入字符串时使用cin而不是getline,因为getline会读取一行字符串,包括空格。而使用cin会读取到第一个空格为止的字符串。

这时就体现了for循环的用处了,它可以用来输入和输出数组。

再来个最简单的实例给大家加深印象,这个实例我就详细写了:
1.定义并输入数组a:

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main(){
	int n; //定义需要输入的数字数量
	cin >> n; //输入需要输入的数字数量
	//使用循环输入数组a
	for(int i = 1; i <= n; i++){
		cin >> a[i];//输入数组a 
	}
	return 0;

}

2.将数组中的每个元素×2再输出

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main(){
	int n; 
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> a[i]; 
	}
	//使用循环处理并输出数组a 
	for(int i = 1; i <= n; i++){
		a[i] *= 2;
		cout << a[i] << " ";
	}
	return 0;

}

大家可以根据此代码进行举一反三。

二维数组

C++中的二维数组实际上就是一个由多个一维数组组成的数组。它是一种特殊的多维数组。一般地,我们可以将二维数组看作是一个表格,其中每一行都表示一个一维数组,每一个元素又是一个一维数组中的元素。

二维数组的定义方式如下:

数据类型 数组名[行数][列数];

其中,数据类型表示数组中存储的数据类型,数组名表示数组的名称,行数表示数组的行数,列数表示数组的列数。

例如,下面的代码定义了一个名为arr的二维数组,其行数为3,列数为4,其中每个元素都是int类型的:

int arr[3][4];

二维数组的元素访问方式也很简单,只需要使用双重循环即可(不知道的看C++循环结构程序设计的教程)。例如,下面的代码遍历了上面定义的二维数组中所有的元素,并将它们输出:

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

需要注意的是,在定义二维数组时,其行数和列数必须是常量,不能动态指定。如果需要动态指定,可以使用指针数组来实现。同时,C++17及以上版本支持动态二维数组的定义,可以使用以下方式:

int** arr = new int*[row];
for(int i = 0; i < row; i++){
    arr[i] = new int[col];
}
//这是创作助手写的,我**(发电报)都不知道有这玩意
 

其中,row表示行数,col表示列数,定义了一个int类型的动态二维数组arr。需要注意的是,使用完动态二维数组后,必须手动释放内存。

给大家留个作业:使用二维数组的知识写个程序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值