1.1 数组形参
1. 采用数组引用的形式定义形参:
$arr两边的圆括号是必须的,因为下标操作符具有更高的优先级
f(int &arr[10]) //error: arr is an array of refrences
f(int (&arr)[10]) //ok: arr is a refrence to an arry of 10 ints
Int (&arr)要从右往左理解:arr首先是一个引用,然后int型说明arr是指向int型的引用。这种定义方式严格限制了必须传递一个长度为10,类型为int的数组。
2. 采用指针的方式传递数组形参
3. 采用数组声明的方式传递形参
void printValues(int[]) {}
void printValues(int[10]) {}
以这种方式传递,编译的时候不会检查数组长度,所以上面两种定义是等价的。
4. 多维数组
int *matrix[10];//array of 10 pointers
int (*matrix)[10]; //pointer to an array of 10 ints
matrix两边的圆括号是必须的
1.2 返回值
函数可以返回左值(返回引用)
如果不希望函数返回值被修改,声明函数返回值的时候用const修饰。
函数返回值返回引用可能会带来一些不好的结果,需要的时候还是返回对象来的更好一些。