C++基于范围的for循环

C语言中,使用for循环来遍历数组元素,这样非常不方便,但在C++中,如果在函数内部想要实现遍历数组那么可以使用基于范围的for循环

for循环后的括号有两部分组成,第一部分是范围内用于迭代的变量,范围的意思就是对于数组而言,第一个元素和最后一个元素的范围,对于类而言就是begin和end之间的范围;第二个部分是表示被迭代的范围。

for循环自动判断结束,自动迭代。

下面这个代码的意思是,依次取arr数组的数据赋值给ar,而ar又是arr数组每一次迭代变量的别名,ar*=2,那么对应的arr数组里的数据都要*2;

再依次取arr数组的数据赋值给arrr,打印arrr,就实现了arr数组的打印。

void bianli()
{
	int arr[] = { 1,2,3,7 };
	for (auto& ar : arr)//ar是arr的别名
		ar *= 2;//arr[]={2,4,6,14}
	for (auto arrr : arr)
	{
		cout << arrr << endl;//打印arr的值
	}
}
int main()
{
	bianli();
}

如果数组与for循环在不同的函数中,想通过形参传递arr,实现for循环遍历是不行的,因为数组的传递只能传地址,并不能传递数组本身,数组被削弱了,那么被调函数中的for循环就不知道迭代的范围,编译错误。这也可以解释为什么使用数组传参,不可以在被调函数中求数组的大小,只能通过传形参的方式告诉被调函数数组的大小,因为只能传数组指针,数组退化导致的。

void bianli(int arr[])
{
	for (auto& ar : arr)
		ar *= 2;
	for (auto ar : arr)
	{
		cout << ar << endl;
	}
}
int main()
{
	int arr[] = { 1,2,3,7 };
	bianli(arr);//error
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值