复习)指针的功能:存放变量的地址 ; 间接操作变量 ; 可以任意指向。
一.函数可以把相对独立的某个功能抽象出来,使之成为程序中的一个独立实体。可以在同一个程序或其他程序中多次重复使用。
核心重点就是重复使用代码。
意义:是面向过程编程的基本单元。
一个函数完成一个基本功能。
二.函数类型:
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 定义---------程序结束