复习)指针的功能:存放变量的地址 ; 间接操作变量  ; 可以任意指向。

一.函数可以把相对独立的某个功能抽象出来,使之成为程序中的一个独立实体。可以在同一个程序或其他程序中多次重复使用。

核心重点就是重复使用代码。

意义:是面向过程编程的基本单元。

一个函数完成一个基本功能。

二.函数类型:

1.内置函数:语由言系统提供;用户无须定义,也不必在程序中作类型说明;只需在程序前包含有该函数定义的头文件;

        注意点:若包含头文件后,仍无法使用使用链接 -lm  (面试的笔试题一般默认不让使用内置函数)

常用内置函数:double sqrt(double x)  计算x的平方根

double pow(double x, double y)   计算x的y次幂

double ceil(double x)      求不小于x的最小整数,并以double形式显示

double floor(double x)    求不大于x的最大整数,并以double形式显示

int toupper(int x)     如果x为小写字母,则返回对应的大写字母

int tolower(int x)    如果x为大写字母,则返回对应的小写字母

int rand(void)      产生一个随机数

2.自定义函数:程序员自已编写的函数

   返回值类型  函数名  参数列表   函数体

函数体中计算的结果可以通过return 返回给外部使用  外部可以通过参数列表想函数体中 传值。


3.函数声明

返回值类型   函数名   参数列表;

使用:当一个函数的定义在main()之后,若main()中有调用该函数,那么,必须在main()之前添加该函数的声明。

4.函数的调用

4-1嵌套调用  void fun_b(){xxxxx;}

void fun_a(){fun_b();xxxxx;}

void main(){fun_a();xxxxx;}

4-2递归调用(函数调用自己本身)

void fun_a()

{

xxxxx;

fun_a();

xxxxx;

}

递归函数的特点:(1)递归结束的条件(2)递归公式

递归调用一般会有if_else

5!=5*4!

1!=1

优点:代码简单明了

缺点:执行过程中耗费的资源多

input:5

main()

fact(5)

a*=fact(4)

a*=fact(3)

a*=fact(2)

a*=fact(1)

return 1;

危害:当递归层数越多时,可能会发生段错误。因为资源会被耗尽。

求:非伯纳阶数的第n位上的值是多少?

1 1 2 3 5  8 13 31  34.。。。。。

if(1==num||2==num)

return 1;

else

return fun(num-1)+fun(num-2)

5.变量的作用范围(作用域)

5-1作用域:某些事物的有效区域

局部变量:函数或语句块({大括号内的叫语句块})中的变量

例如:1.int main()

            {

int a;//局部变量

}

2.

int fun(int b)//局部变量b

{

}

作用域:变量定义------》所在函数的结束处

全局变量:函数外部的变量

作用域:可以在任何函数中使用

思考:若一个函数中的局部变量和全局变量同名了,会怎么样?

答案:局部变量会覆盖全局变量的作用域。


6.变量的存储类型:静态和动态的。

auto 自动变量

int main()

{

auto int a;//等价于 int a;

}

register 寄存器变量(操作快)

regitster int i;

for(i=0;i<10000000000;++i)

{

xxxxxxxx

}

static  静态变量

                         作用域                      

局部变量      定义     ----return        定义---------return

static 局部变量         ----return        定义---------程序结束