63,596
社区成员




#include <iostream>
#include <cstdlib>
using namespace std;
void foo(int (&a)[10])
{
for(int i = 0; i < 9; i++)
{
int temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
int main()
{
int arr[10];
for(int i = 0; i < 10; i++){
arr[i] = i+1;
}
foo(arr);
for(int i = 0; i < 10; i++){
cout<<arr[i]<<' ';
}
return EXIT_SUCCESS;
}
你会看到输出将是 2 3 4 5 6 7 8 9 10 1
void fun3(int (&a)[10])
{
for(int i=0; i<10; i++)
;
};
//看这个:
int arrray[10];
void fun1(int *a)//或者fun1(int a[])
{
for(int i=0; i<10; i++)
a[i]=i;
};
void fun2(int& a)//怎么实现与fun1一样的功能呢?
{
for(int i=0; i<10; i++)
;
};
//况且
//void fun3(int& a[10])//错误提示:arrays of references are illegal
//{
// for(int i=0; i<10; i++)
// ;
//};
//是不合法的
//因为如果允许arrays of references的存在,那么必需提供与指针所使用类似
//操作符++,[],则引用就会和指针一样不安全,
//而这恰恰违背了c++引入引用初衷。