问题描述:
根据下面代码和结果回答下面的问题。数组的遍历方法有哪3种呢?第一种、while循环方式。第二种、for循环方式。第三种、高级for循环写法。即通过临时变量,在每一次循环体种,记录数组的每一个元素。数组有几个元素,循环体就执行几次。
代码
// Created by 黑马程序员.
#include "iostream"
using namespace std;
/*
* 获取数组长度: sizeof(数组对象) / sizeof(数组某个元素)
*
* 高级for循环获取数组每个元素:
* for (元素类型 临时变量: 数组变量)
* {
* 临时变量即数组元素;
* }
*
*/
int main()
{
int arr[] = {1, 2, 3, 4, 5};
// while
int i = 0; // 控制因子(循环中作为下标)从0开始
while (i < sizeof(arr) / sizeof(arr[0]))
{
cout << "while循环取出内容:" << arr[i] << endl;
i++;
}
// for
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
cout << "for循环取出内容:" << arr[i] << endl;
}
// for 的高级写法
for (int element: arr)
{
cout << "高级for循环取出内容:" << element << endl;
}
return 0;
}
结果
D:\CLion_code\cmake-build-debug\CLion_code.exe
while循环取出内容:1
while循环取出内容:2
while循环取出内容:3
while循环取出内容:4
while循环取出内容:5
for循环取出内容:1
for循环取出内容:2
for循环取出内容:3
for循环取出内容:4
for循环取出内容:5
高级for循环取出内容:1
高级for循环取出内容:2
高级for循环取出内容:3
高级for循环取出内容:4
高级for循环取出内容:5
Process finished with exit code 0
问题解答:
在C++中,数组的遍历有三种常见的方法:
1. while
循环方式
通过 while
循环,使用控制因子 i
从 0 开始,逐一遍历数组的每一个元素,直到达到数组的长度。
int i = 0;
while (i < sizeof(arr) / sizeof(arr[0])) {
cout << "while循环取出内容:" << arr[i] << endl;
i++;
}
解释:在这个 while
循环中,i
用来表示数组的下标,从 0 开始,每次循环都递增 1,直到 i
达到数组的长度。sizeof(arr) / sizeof(arr[0])
用于计算数组的长度。
2. for
循环方式
通过 for
循环,使用下标从 0 到数组的最后一个元素,依次访问数组中的每个元素。
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
cout << "for循环取出内容:" << arr[i] << endl;
}
解释:for
循环结构较为紧凑,通过下标 i
访问数组中的每一个元素,从 0 到 sizeof(arr) / sizeof(arr[0]) - 1
,即遍历整个数组。
3. 高级 for
循环写法(范围 for
循环)
C++11 引入的范围 for
循环,直接遍历数组中的每个元素,避免了显式使用下标,语法更加简洁。
for (int element : arr) {
cout << "高级for循环取出内容:" << element << endl;
}
解释:在这个高级 for
循环中,每次循环都会将数组中的一个元素赋值给 element
变量,循环的次数等于数组的长度,代码简洁且易读。
结果与说明
运行代码后的输出结果显示:
while
循环、for
循环和高级for
循环都能够正确地遍历数组中的每个元素,并依次输出数组内容。- 三种方法的主要区别在于代码的写法和复杂度:
while
循环更灵活,但需要手动管理循环变量。for
循环更加简洁和结构化,适用于已知遍历次数的情况。- 高级
for
循环写法是最简洁的,直接操作数组元素而不需要显式的下标,是遍历数组的推荐方式。