数组引用和数组指针和两种非常优美而又用途广泛的语言设施,但很多其名气不是很大,因为这两设施C++中新引入的,大家一般不怎么注意的.
下面通过一小段代码,来展示其用法.
#include <iostream>

using namespace std;

template <class T, int size>
T _min(T (&r_a)[size]) // 函数模板的形参是数组引用

...{
T min_val = r_a[0];
for (int i = 1; i < size; ++i)
if (min_val > r_a[i]) min_val = r_a[i];
for (int i = 0; i < size; ++i)
r_a[i] = 1;
return min_val;
}

template <class T, int size>
T _min(T (&p_a)[size]) // 函数模板的形参是数组指针

...{
T min_val = (*p_a)[0];
for (int i = 1; i < size; ++i)
if (min_val > (*p_a)[i]) min_val = (*p_a)[i];
for (int i = 0; i < size; ++i)
(*p_a)[i] = 1;
return min_val;
}

int main()

...{

int a[] = ...{2,3,5,3,67,123,4};

double b[] = ...{2.1, 4.23, 56.32, 2.0, 1.2};

int (&ria)[5] = a; // 定义数组引用
double (*pda)[5] = &b; // 定义数组指针

for (int i = 0; i < 5; ++i)
cout << ria[i] << " "; // 使用数组引用
cout << " ";


for (int i = 0; i < 5; ++i) ...{
cout << (*pda)[i] << " "; // 数组指针
cout << " ";

cout << _min(a) << " "; // 数组引用作为函数的实参
cout << _min(&b) << " "; // 数组指针作为函数的实参

system("pause");
return 0;
}