7.1 函数基本知识
7.1.1 定义函数
函数分为两类:有返回值与无返回值的函数。
对于有返回值的函数,必须使用返回语句,将值返回给调用函数。
若函数包含多条返回语句,则函数在执行第一条返回语句后结束。
7.1.2 函数原型
声明函数如果在main函数后方,则在前面声明函数(复制函数定义中的函数头并加分号),原型参数列表可包括变量名也可不包括。
7.2
7.2.1 函数参数
函数参数列表中的参数是形参,在函数中修改形参不会影响调用程序中的数据。
7.3 函数与数组
int sum_arr(int arr[],int n);
上述函数中,arr实际上并不是个数组,而是指针,但是在编写函数的其余部分时,可以将arr看做数组。
7.3.1 函数如何用指针来处理数组
int sum_arr(int arr[],int n);
int sum_arr(int* arr,int n);
sum_arr的类型必须是int,所以数组类型必须是int指针,即int *。
int * arr 与 int arr[] 运用于函数头或者函数原型中的时候含义相同,在其他上下文中不能这么用。
arr[i] == *(arr + i);
&arr[i] == arr + i;
将指针+1实际上是加上一个与指针指向类型相同的类型的长度。对于遍历数组而言,使用指针加法和数组下标是等效的。
7.3.2 将数组作为参数意味着什么
传递常规变量的时候,函数将使用该变量的拷贝;但传递数组时,函数将使用原来的数组。
将数组地址作为参数可以节省复制整个数组所需的时间和内存。如果数组很大拷贝的系统开销会很大。
7.3.3 更多数组函数示例
为了防止函数无意修改数组中的数据,可在声明形参时使用const
void show_array(const double ar[],int n);
7.3.4 使用数组区间的函数
int cookies[ArSize] = {1,2,3,4,5,6};
int sum = sum_arr(cookies, cookies+ArSize);// 第一个元素与最后一个元素后面的一个位置
7.3.5 const 与 指针
int gorp = 16;
int chips = 12;
const int * p = &gorp; //静止修改p指向的值,允许使p指向另一个变量
int gorp = 16;
int chips = 12;
int const * p = &gorp; //允许修改p指向的值,静止使p指向另一个变量
7.10 函数指针
double pam(int);
double (*pf)(int);
pf = pam;//返回值类型应该相同
double x = pam(4);
double y = (*pf)(5);
//C++允许像函数名一样使用pf
double y = pf(5);
标签:arr,函数,int,double,7.3,plus,数组,cpp,primer
From: https://blog.csdn.net/weixin_57884464/article/details/142167261