黑马程序员——C语言函数部分

时间:2022-01-30 00:26:23

函数部分

1、函数是程序的基本组成单位,其中主函数在每一个程序有且只有一个,并且程序必须从主函数开始执行。

                   有参函数

          参数

                   无参函数

2、函数              有返回值函数

          返回值

                     无返回值函数

3、函数的定义

函数返回值类型   函数名(类型 形参1,类型 形参2)  ——>首部定义

{

   声明部分;              ——>函数体

执行部分;

}

4、若省略函数返回值类型,则默认为整型

5、若函数有返回值,则必须通过return返回,并且return语句一旦执行,其后面语句不再执行

6、return的格式

(1)return  表达式;

(2)return  (表达式);

7、若函数的返回类型与return的返回类型不一致,则以定义时为标准

   Eg:(1int  fun()

{

float  a = 2.6 

return  a

}

a = 2

2float fun()

{

int  a = 7 

return  a

}

a = 7.0

8、若函数无返回值,则将其类型定义为空类型,即void。并且函数体中不再出现return语句

Egvoid fun()

{

int  a = 2

a = a+1

return  a;  //此处错误

}

9、函数的调用

函数名 (实参1,实参2

10、常见的函数调用

 (1)通过语句调用:fun 

 (2)通过表达式调用:sum = fun , y

 (3)通过参数调用:funfun mn))

 (4)通过递归调用

11、调用执行流程

在程序中,看到函数的调用语句,则转去执行被调用的函数,若有参数,应进行参数间传递,即把实参的值传递给对应的形参,函数执行完毕,返回函数调用处

12、调用原则

               调用

(1)主函数             子函数     (主能调用子,子不能调用主)

 

主函数由系统提供,只能由系统调用

               调用

2)子函数            子函数       (子函数间可相互调用)

13、函数可以嵌套调用,但不能嵌套定义

14、若函数的定义出现在函数调用之后,则在调用前加上函数的声明语句

声明语句 首部定义+分号

在单向值传递中,形参的改变对实参没有影响

 

递归调用:函数自身调用自身叫做函数的递归调用

(1)形式

    直接递归:fun ——> fun

间接递归: fun ——> fun c ——> fun

(2)步骤

递:递推——>向外展开

归:回归——>向内返回

 

变量的作用域和存储域

变量的存储域

(1)静态变量:static   egstatic  int a

(2)动态变量:auto    egauto  int a

注:定义动态变量时,auto可以省略不写

静态与动态的区别:

Egint a;                    static int a

Printf“%d\n”,a;         Printf“%d\n”,a;          

输出随机值                输出0

   注:动态变量未赋初值,默认为随机值

静态变量未赋初值,默认为0

在调用函数时,动态变量的初始化每次都要执行,而静态变量的初始化只在第一次执行,以后不再执行

变量的作用域

1)全局变量:在函数之外定义的变量,他的有效范围从定义的位置开始,到整个程序结束

2)局部变量

在函数体内部或复合语句体内定义的变量,他只在该函数或该复合体内有效