(七十六)基于范围的for循环

简介:

先上代码:

#include <iostream>
using namespace std;

int main()
{
	double price[5] = { 1.1,2.2,3.3,4.4,5.5 };
	for (double a : price)
		cout << a << endl;
	system("pause");
	return 0;
};

输出:

1.1
2.2
3.3
4.4
5.5
请按任意键继续. . .

总结:

for (double a : price)这一行代码,

指的是初始化一个double类型的变量a,

这个变量a在数组price中,初始为price[0],即数组第一个元素,

然后执行一次循环后,a++,于是price[0]变price[1],即数组第二个元素;

每执行一次循环,都会往后推一位,直到成为数组最后一个元素;

当再次判断时,发现已经超出数组范围了,比如说5个元素,但他已经是数组第6个元素了,于是循环结束。

 

再简单理解就是,这个变量a在循环体第n次执行时,是price的第n个元素;

当n大于数组个数时(即不在数组成员范围内),循环结束。

 

无论数组中有没有这个数,这个变量a都会是数组中相应位置的元素。

 

这个循环相当于:

	double a;	//double a:pirce变成第一句是double a
	for (i = 0;i < 5;i++)	//第二句是i=0;i<5;i++ 。注:<5的5,是数组的元素个数。
	{
		a = price[i];	//第三句是a=price[i]
		cout << a << endl;	//这行不变
	}

即,一行double a:price是三行代码的缩写:

第一行是循环外的double a; ;

第二行是循环初始化+判断语句+循环更新,其中判断语句中的5,是数组元素个数;

第三行是a=price[i]; 即给a每轮赋值。

 

②double a:price 中的a,是不影响判断语句的,因此,a是可以进行操作的。比如对a进行加减乘除。

 

③对变量a进行操作,不影响原来数组的值。

 

④也可以通过地址,对原来数组中的值进行操作。如代码:


	for (double &a : price)
	{
		*&a = 0.8*a;	//或a=0.8*a
		cout << a << endl;
	}

 

在第一行代码中,因为price是一个数组,数组名实际是一个地址,

在之前,当a=price[0]的时候,a=price[0]的值,即1.1;

当&a=price[0]的时候,&a是price[0]所在的内存地址,而*&a是内存地址解除引用。实际上就相当于这个内存地址储存的值。

 

另外:也可以直接用a=0.8*a;来对数值进行操作。

 

在执行第一次循环的时候,&a=price[0]; a是操作price[0]的值。

当第二次循环的时候,&a=price[1]; a操作的是price[1]的值。

 

简单的记忆,就是在类型名和变量名中间加入地址符号&,

然后在操作的时候,使用*&变量名的形式进行操作。

 

⑤书上的解释:

	for (double &a : price)
	{
		*&a = 0.8*a;	//或a=0.8*a
		cout << a << endl;
	}

符号&表示a是一个引用变量。就这里而言,这种声明可以让接下来的代码可以修改数组的内容。

 

⑥变种:

代码可以改为:


	for (double a : { 1.1,2.2,3.3,4.4,5.5 })
	{
		a = 0.8*a;
		cout << a << endl;
	}

a=0.8*a;可以让下一行输出的a为0.8*数组中对应元素的值。


目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 C语言
【C/PTA】循环结构进阶练习(三)
【C/PTA】循环结构进阶练习(三)
240 0
|
11月前
|
JavaScript 前端开发
不能直接在GEE的Map函数中使用循环结构
不能直接在GEE的Map函数中使用循环结构
150 3
|
6月前
【C/PTA】循环结构进阶练习(二)
【C/PTA】循环结构进阶练习(二)
155 0
|
6月前
|
机器学习/深度学习
【C/PTA】循环结构进阶练习(一)
【C/PTA】循环结构进阶练习(一)
252 0
|
6月前
|
BI
【C/PTA】数组练习(编程)
【C/PTA】数组练习(编程)
201 0
|
程序员 Python
牛客题霸在线编程Python题库——Python入门到实践40招(四)(五)(六)循环语句 条件语句 元组
牛客题霸在线编程Python题库——Python入门到实践40招(四)(五)(六)循环语句 条件语句 元组
|
算法 Python
python穷举法循环经典案例:借书方法
小明有5本新书,要借给A、B、C三位小朋友,若每个人每次只能借一本书,则有多少种不同的有效借法?
python穷举法循环经典案例:借书方法
|
Python
【Python零基础入门篇 · 5】:if判断的用法、内置函数range()、for循环和while循环以及break和contine
【Python零基础入门篇 · 5】:if判断的用法、内置函数range()、for循环和while循环以及break和contine
102 0
【Python零基础入门篇 · 5】:if判断的用法、内置函数range()、for循环和while循环以及break和contine
|
C# C语言
C语言编程:for循环与C#中的for循环不一样
C语言编程:for循环与C#中的for循环不一样
C语言编程:for循环与C#中的for循环不一样
|
算法 Java 编译器
<LeetCode天梯>Day046 位1的个数(内置函数+位运算) | 初级算法 | Python
<LeetCode天梯>Day046 位1的个数(内置函数+位运算) | 初级算法 | Python
<LeetCode天梯>Day046 位1的个数(内置函数+位运算) | 初级算法 | Python