1、数组形参 ①数组的两个性质:不允许拷贝数组以及使用数组时通常会将其转换成指针。 ②当给函数传递一个数组时,实际上传递的是指向数组首元素的指针。 ③数组形参的定义: (1)void print(const int*); (2)void print(const int[]); (3)void print(const int[10]); 以上三个函数都是等价的,每个函数的形参类型都是const int*。
④表示数组大小的三种方式 (1)使用标记指定数组长度。 条件:使用这种方法的数组本身必须包含一个结束标记,典型事例是C风格字符串。C风格字符串存储在字符数组中,以空字符/0结束。
(2)使用标准库规范 方法:传递指向数组首元素和尾后元素的指针。 条件:使用标准库中的begin和end函数提供所需要的指针。
(3)显示传递一个表示数组大小的形参 方法:专门定义一个表示数组大小的形参,数组大小的类型是size_t。
⑤数组形参和const 当函数不需要对数组元素执行写操作的时候,数组形参应该是指向const的指针。 ⑥数组引用形参 函数的形参是对数组的引用类型,如: void print(int (&arr)[10]); //形参是一个对具有10个int型元素的数组的引用。 ⑦传递多维数组 (1)当将多维数组传递给函数时,真正传递的是指向数组首元素的指针,因为多维数组的首元素也是数组,所以传递的是指向数组的指针。 (2)数组的第二位(以及后面的所有维度)的大小都是数组类型的一部分,不能省略。 (3)传递多维数组的函数的定义方式: Ⅰ、void print(int (*matrix)[10],int rowsize); Ⅱ、void pirnt(int matrix[][10],int rowsize); //这两个函数都是等价的,第一个维度通常会被省略掉。它们的形参都是指向含有10个整数的数组的指针。