基于范围的for循环和常指针

#include <iostream>
using  namespace std;
void fun1(int *a)
{
	cout << "调用指针形参" << endl;
	int i;
	for (i = 0; i < 3; i++)
	{
		a[i] += 1;
		cout << a[i]<< endl;
	}
}
void fun2(const int *a)//最小授权原则,够用就好,隐藏细节,保证安全
{
	cout << "调用const指针形参" << endl;
	int i;
	for (i = 0; i < 3; i++)
	{
 		//a[i] += 1;//常指针,不能修改
		cout << a[i]+1 << endl;
	}
}
int main()
{
	int array[3] = { 2,3,4 };
	int *p,i;
	cout << "开始" << endl;
	for (i = 0; i < 3; i++)
	{
		cout << array[i] << endl;
	}
	cout << "第一种for" << endl;
	for (p = array; p <array+ sizeof(array) / sizeof(int); p++)
	{
		*p += 2;//会更改数组的值
		cout << *p << endl;
	}
	cout << "输出数组" << endl;
	for (i = 0; i < 3; i++)
	{
		cout << array[i] << endl;
	}
	cout << "第二种for" << endl;
	for (int &e : array)//会更改数组的值
	{
		e += 4;
		cout << e << endl;
	}
	cout << "第三种for" << endl;
	for (int e : array)//不会更改数组的值
	{
		e += 4;
		cout << e << endl;
	}
	cout << "输出数组" << endl;
	for (i = 0; i < 3; i++)
	{
		cout << array[i]<<endl;
	}
	fun1(array);
	cout << "输出数组" << endl;
	for (i = 0; i < 3; i++)
	{
		cout << array[i] << endl;
	}
	fun2(array);
	cout << "输出数组" << endl;
	for (i = 0; i < 3; i++)
	{
		cout << array[i] << endl;
	}
}


开始
2
3
4
第一种for
4
5
6
输出数组
4
5
6
第二种for
8
9
10
第三种for
12
13
14
输出数组
8
9
10
调用指针形参
9
10
11
输出数组
9
10
11
调用const指针形参
10
11
12
输出数组
9
10
11
请按任意键继续. . .

数组元素作参数,与单个变量一样。
数组名作参数,形参和实参都应该是数组名,类型要一样,传送的是数组首地址。对形参数组的改变会直接影响到实参数组
传的是地址,所以指针和引用都可以改变原来的值,要想不改变,加const,最小授权原则,够用就好,隐藏细节,保证安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值