for(auto&p:b)循环的非常规用法

本文探讨了C++中for循环中`auto& ptr`与`autoptr1`的使用差异,揭示了它们分别如何遍历数组并影响值传递。作者发现`auto& ptr`支持值传递,而`autoptr1`不传递值,对数组操作有深入解析。
摘要由CSDN通过智能技术生成

今天在工作中发现了关于for循环一个另类的写法:

#include<iostream>


void init_a(int arr[])	//初始化传入的数组
{
	
	for(int i = 5;i >=0;i--)
	{
		arr[i] = i;

		std::cout<<"初始化"<<arr[i]<<std::endl;
	}
}


int main()
{
	
int a[5];

init_a(a);


std::cout<<"use auto & ptr:================================================================="<<std::endl;
				for(auto  &ptr :a)
				{
					ptr +=100;
					std::cout<<"ptr="<<ptr<<std::endl;
				
				}

				for(int j=0;j<5;j++)
				{
				std::cout<<"a[after auto ptr] = "<<a[j]<<std::endl;
				}

std::cout<<"use auto  ptr1:================================================================="<<std::endl;
init_a(a);
				for(auto  ptr1 :a)
				{
					ptr1 +=100;
					std::cout<<"ptr1="<<ptr1<<std::endl;
				}
				
				for(int j=0;j<5;j++)
				{
				std::cout<<"a[after auto &ptr1] = "<<a[j]<<std::endl;
				}

}


得到结果:

初始化5
初始化4
初始化3
初始化2
初始化1
初始化0
use auto & ptr:=================================================================
ptr=100
ptr=101
ptr=102
ptr=103
ptr=104
a[after auto ptr] = 100
a[after auto ptr] = 101
a[after auto ptr] = 102
a[after auto ptr] = 103
a[after auto ptr] = 104
use auto  ptr1:=================================================================
初始化5
初始化4
初始化3
初始化2
初始化1
初始化0
ptr1=100
ptr1=101
ptr1=102
ptr1=103
ptr1=104
a[after auto &ptr1] = 0
a[after auto &ptr1] = 1
a[after auto &ptr1] = 2
a[after auto &ptr1] = 3
a[after auto &ptr1] = 4

上述代码中:对数组a进行赋值的时候我故意写成了从100->1的方式循环
我们可以看到在下面通过for(auto&ptr:a)和for(auto ptr1:a)遍历该数组的时候,又是1->100顺序遍历的
所以,大胆猜测,小心求证,经过本人研究得出结论:

for(auto & ptr :a)
{
	std::cout<<ptr<<std::endl;
}

这个代码的作用就是,顺序遍历数组a,且具有值传递功能

for(auto  ptr1 :a)
{
	std::cout<<ptr<<std::endl;
}

这个代码的作用就是,顺序遍历数组a,但不具有值传递功能

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值