#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,最小授权原则,够用就好,隐藏细节,保证安全