C++函数(重点)

  • 函数和数组
  • 函数和结构
  • 函数和指针
  • 函数和string
  • 函数递归

函数定义:

typename functionnname(parameterlist){
     statements;
     return value;
}

函数原型:如果函数定义在函数调用之后,必须在函数调用前进行函数原型声明,函数原型描述了函数到编译器的接口,将函数返回值类型、参数类型和数量告诉编译器。 函数原型是一条语句,就是函数定义中的函数头,此外,在原型的参数中不要求提供变量名,有类型列表就足够了。

函数参数和按值传递:

函数和数组:

1、输入为数组:

定义:
int sum_array (int array[],int n)
实际情况是array是一个指针,在函数内部,array可以看成是数组
调用:
sum_array(cooke,4) 其中cooke是数组名

2、使用指针处理数组:

数组名==指针


定义:
int sum_array (int* array,int n)
调用:
sum_array(cooke,4) 其中cooke是数组名

3、使用 输入为数组区间的函数:

 int sum_array (const int* start,const int* end ) 
调用:

sum_array(cooke,cooke+3) 其中cooke是数组名

指针和const:

将const用于指针有很微妙的地方,第一种方法是让指针指向一个常量对象,这样可以防止该指针来修改所指向的值,第二种方法是将指针本身声明为常量,防止改变指针指向的位置。

但pt的声明并不意味着它指向的值实际上就是一个常量,而只意味着队医pt来说,是一个常量,因此可以通过修改age来 改变age值。

注意:c++禁止将const地址付给非const的指针,除非使用强制准换。

函数和二维数组:

定义函数: 注意这个[4]中的数字必不可少
int sum_array (int array[][4],int n)
调用:

sum_array (cooke,4)

or
定义:array是一个由4个指向int的指针组成的数组
int sum_array (int (*array)[4],int n)

函数和c风格字符串

表示字符串方法有三种:

char数组 、用括号引起的字符串常量、被设置为字符串的地址的char指针。

字符串作为参数来传递,实际传递的是字符串的第一个字符的地址,因此,需要在函数中将表示字符串的形参声明为char * 类型

int 函数名(const char * str,char ch)

函数返回c风格字符串的函数

在函数内部 声明一个字符串指针 : char * x = char [n+1],然后return x

函数和结构:

定义结构:

struct tracal{
    int x;
    char y;
}
声明函数原型:
tracal sum(tracal x)
也可以传递结构的地址:
tracal sum(tracal *x)

函数和string 对象 array对象

函数递归:

函数指针:

函数也有地址,可以通过指针获取到函数的地址,也可以通过函数指针调用函数

  1. 获取函数的地址:获取 函数地址很简单 ,只要 使用函数名(不加参数即可),例如think()是一个函数名,那么函数地址就是think。

如果要将函数作为参数进行传递,必须是传递函数名;

  1. 声明函数指针:
对于函数:double pam(int)
声明一个函数指针:
double (*pf) (int)
和函数声明类似,不过是将函数名改为指针(加括号),

(*pf) (int)意味着是一个 指向函数的指针

  1. 使用函数指针调用函数

double (*pf) (int) 定义之后

令: pf = pam(函数名)

调用:x=(*pf)(5)

typeof 别名

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注