导语
最近出了趟门,所以停更了一段时间,今天我们来学习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。需要注意的是,使用完动态二维数组后,必须手动释放内存。
给大家留个作业:使用二维数组的知识写个程序