数组的引用和指针的引用
数组的引用
通过引用传递数组,和其他类型一样,数组形参可声明为数组的引用。如果形参是数组的引用,编译器不会将数组实参转化为指针,而是传递数组的引用本身。在这种情况下,数组大小成为形参与实参类型的一部分,编译器检查数组实参的大小与形参的大小是否匹配。
注意:数组引用中,数组大小成为形参与实参类型的一部分,则形参和实参中的数组大小要一致。否则编译通不过。
void fun1(int (&a)[10])//若声明为&a[10] 则编译通不过
{
for(int i = 0; i < 5; i++)
cout<<a[i]<<endl;
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
fun1(a);
getchar();
return 0;
} <span style="color:#ff0000;">
</span>
数组的引用同样看做是数组的别名。
指针的引用
void function(int *&ref)//指针的引用
{
*ref=100;
}
int main()
{
int x = 2;
int *z = &x;
function(z);
printf("x=%d\n",x);
return 0;
}<span style="color:#ff0000;">
</span>
若主函数如下,则编译不通过//为什么不行的 ,感觉和上面的代码差不多啊,但是上面的代码可以运行。希望大牛们可以指导下。int main()
{
int x = 300;
function(&x);
printf("x=%d\n",x);
return 0;
}