因为数组不允许被拷贝、所以我们无法以值传递得方式使用数组参数
使用数组时数组会被转换成指针使用,所以我们为一个函数传递一个参数时,实际上传递的是数组元素的首元素的指针
一下三种方式函数的声明是一致的:
void print( const int* );
void print( const int[] );
void print( const int[10] );
尽管表现形式不同,但是三个函数的唯一参数都是const int*
另外在数组做形参的时候还需要搞清楚两个定义;数组指针与指针数组
数组指针:首先它是一个指针,指向的是一个数组。至于数组里面是什么类型,取决于定义时的类型
指针数组:它是一个数组,数组存放内容是指针,同样指针的类型不确定
例如:
int *a[10]; //a与后面的10结合,它是一个数组,数组存放元素是int* 所以它是一个指针数组
int(*a)[10]; //他是一个指针,指向的是一个存放int 类型对象 大小为10的一维数组。 所以它是一个数组指针
数组引用形参
func( int (&arr)[10] );
数组名两端的括号必不可少,如果没有括号代表的是 arr是引用的数组 数组里面存放的是int类型的引用