📅  最后修改于: 2020-09-25 04:45:06             🧑  作者: Mango
在C++中,数组是一个变量,可以存储相同类型的多个值。例如,
假设一班有27个学生,我们需要存储所有学生的成绩。无需创建27个单独的变量,我们只需创建一个数组即可:
double grade[27];
在这里, grade
是一个最多可容纳27个double
类型元素的数组。
在C++中,声明数组后不能更改数组的大小和类型。
dataType arrayName[arraySize];
例如,
int x[6];
这里,
在C++中,数组中的每个元素都与一个数字关联。该数字称为数组索引。我们可以使用这些索引来访问数组的元素。
// syntax to access array elements
array[index];
考虑上面我们看到的数组x
。
在C++中,可以在声明期间初始化数组。例如,
// declare and initialize and array
int x[6] = {19, 10, 8, 17, 9, 15};
在声明期间初始化数组的另一种方法:
// declare and initialize an array
int x[] = {19, 10, 8, 17, 9, 15};
在这里,我们没有提到数组的大小。在这种情况下,编译器会自动计算大小。
在C++中,如果数组的大小为n
,则我们最多可以在数组中存储n
个元素。但是,如果我们存储少于n
个元素,将会发生什么。
例如,
// store only 3 elements in the array
int x[6] = {19, 10, 8};
在此,数组x
的大小为6
。但是,我们仅用3个元素对其进行了初始化。
在这种情况下,编译器会为其余位置分配随机值。通常,此随机值只是0
。
int mark[5] = {19, 10, 8, 17, 9}
// change 4th element to 9
mark[3] = 9;
// take input from the user
// store the value at third position
cin >> mark[2];
// take input from the user
// insert at ith position
cin >> mark[i-1];
// print first element of the array
cout << mark[0];
// print ith element of the array
cout >> mark[i-1];
#include
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// Printing array elements
// using range based for loop
for (const int &n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// Printing array elements
// using traditional for loop
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
输出
The numbers are: 7 5 6 12 35
The numbers are: 7 5 6 12 35
在这里,我们使用了for
循环从i = 0
迭代到i = 4
。在每次迭代中,我们都打印了numbers[i]
。
我们再次使用基于范围的for循环来打印出数组的元素。要了解有关此循环的更多信息,请选中C++ Ranged for Loop。
注意:在基于范围的循环中,我们使用了代码const int &n
而不是int n
作为范围声明。但是,最好使用const int &n
因为:
int n
只需在每次迭代期间将数组元素复制到变量n
中。这不是高效的内存。
但是, &n
使用数组元素的内存地址来访问其数据,而无需将其复制到新变量中。这样可以节省内存。
const
以免意外更改数组的值。 #include
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// store input from user to array
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
// print array elements
for (int n = 0; n < 5; ++n) {
cout << numbers[n] << " ";
}
return 0;
}
输出
Enter 5 numbers:
11
12
13
14
15
The numbers are: 11 12 13 14 15
再一次,我们使用了for
循环从i = 0
迭代到i = 4
。在每次迭代中,我们从用户那里获取输入并将其存储在numbers[i]
。
然后,我们使用了另一个for
循环来打印所有数组元素。
#include
using namespace std;
int main() {
// initialize an array without specifying size
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// print array elements
// use of range-based for loop
for (const double &n : numbers) {
cout << n << " ";
// calculate the sum
sum += n;
// count the no. of array elements
++count;
}
// print the sum
cout << "\nTheir Sum = " << sum << endl;
// find the average
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
输出
The numbers are: 7 5 6 12 35 27
Their Sum = 92
Their Average = 15.3333
在此程序中:
注意:我们使用了有范围的for
循环,而不是普通的for
循环。
普通的for
循环要求我们指定迭代次数,该次数由数组的大小指定。
但是,有范围的for
循环不需要这样的规范。
如果我们声明一个大小为10的数组,则该数组将包含索引从0到9的元素。
但是,如果尝试访问索引为10或大于10的元素,则将导致未定义的行为。