今天写了几个排序,发现对数组作为参数传递还不是很熟练啊,刚起来,脑袋还不是很清醒。所以在这里总结复习一下这个小知识点。。
#include<iostream>
using namespace std;
void test1(int a[])
{
cout<<"int test1 fuction:"<<" "<<sizeof(a)<<endl;
}
void test2(int (&a)[100])
{
cout<<"int test2 fuction:"<<" "<<sizeof(a)<<endl;
}
void test3(int* a)
{
cout<<"int test3 fuction:"<<" "<<sizeof(a)<<endl;
}
void main()
{
int a[100];
cout<<"int main fuction:"<<" "<<sizeof(a)<<endl;
test1(a);
test2(a);
test3(a);
}
这里列举了三种数组作为参数传递的方法,其中第一种和第三种是一样的,数组退化为指针的情况。此时数字名只是第一个元素的地址而已。第二种情况是引用传递,我不怎么喜欢这种方法,这种在形参中还必须指定大小,而且在传递实参的时候还必须给一样的大小。否则报错。但是第一种又是退化为指针 ,不能获知其真实大小,如果一定要知道大小的话,那么就把大小作为另外一个参数传递进去吧。。如:
void test(int a[],int arrayLength)