一维数组的函数参数传递

 1 #include <iostream>
2 using namespace std;
3
4 void fun1(int p[])
5 {
6
7 }
8
9 void fun2(int* p)
10 {
11
12 }
13
14 void fun3(int p[8])//即使a[10]作为参数传递进来,也不会编译出错,因为传递进来的实际上只是a;
15 {
16
17 }
18
19 void fun4(int (&p)[10])
20 {
21
22 }
23 int main()
24 {
25 int a[10]={1,5};
26 fun1(a);
27 fun2(a);
28 fun3(a);
29 fun4(a);
30 return 0;
31 }


 

对于数组a[10]作为实参,对所有的以数组作为实参的函数的调用得用fun1(a),fun3(a),

而不能用fun1(a[10])和fun3(a[]),否则出现编译错误,这是由于数组的大小不作为实参的内容传递的原因

当将void fun4(int (&p)[10])改成void fun4(int (&p)[8])时,编译会出错,提示 error C2664: “fun4”: 不能将参数 1 从“int [10]”转换为“int (&)[8]”

。由此说明只有在fun4函数中,通过引用传递了数组的大小,fun1,fun2,fun3传递的实际上都是int* p;

编辑器加载中...

posted @ 2011-11-04 10:04  refazy  阅读(3481)  评论(0编辑  收藏  举报