五、 函数

1.函数就是有特定功能的代码段

2.函数的分类:

库函数:

自定义函数:

3.函数的声明、定义和调用

4.函数定义:

(1)返回值类型:函数的结果值类型,函数不能返回数组,指定返回类型是void类型,说明函数没有返回值(注意,返回值不能为数组)

(2)函数名:函数名命名规范和变量名命名规范一样

(3)参数列表:每个形式参数的前面说明其类型,即使几个参数具有相同的数据类型,也必须对每个形式参数分别进行类型说明。形式参数用逗号进行分隔,就算没有参数,函数后面的()也不能省略,可以写成(void)

(4)函数体:函数功能的实现

5.结构

返回值类型 函数名 参数列表{
           
            功能代码;
            return 返回值;
         }
         int a(int b){
            return a+b;

}

6.函数的定义分类:注意return后面的代码不被执行

(1)无参无返回值:

//测试无参无返回值可以添加return语句,但是return之后的语句将不再被执行

void sayHello(void){

printf(“Hello”);

}

(2)无参有返回值

//返回值后面的数据,返回给主调函数

//有返回值类型,就一定要有返回值,其(返回值)类型域返回值类型对应

int getCount(void){

return 33;

}

(3)有参无返回值

//如何写参数:类型 + 参数名(形式参数,又叫形参)

//如果参数列表内参数都是同类型,也不能省略数据类型,用逗号隔开。

//函数名:驼峰命名,见名知意。

(4)有参有返回值

//注意事项:以上三个结合

//函数名不能重复定义

7.返回值:

(1)函数执行完毕之后的结果,这个结果通常是一个数值,就是函数的返回值,只能通过return返回给主调函数

(2)函数的返回值只有一个,返回结果用return

(3)函数即使没有返回值,也可以用return来结束函数的执行,返回给主调函数

(4)return后面的语句不再执行

8.函数的声明:就是函数的描述又叫函数原型

9.结构:返回值类型 函数名(参数列表)

注意事项:

(1)如果函数的定义出现在主调函数之后,需要提前进行函数的声明(也就是写在主调函数之前)

(2)如果函数的定义出现在主调函数之前,可以省略函数的声明。

10.函数调用:在主调函数中调用(调用被调函数的函数)即使函数没有参数,但是在调用函数时。一定不能省略”()“

11.不需要写返回值类型,直接写函数名

12.实参可以写常量,也可以写变量,还可以写常量表达式

13.形式参数:出现在函数定义中,用”假名字“来表示被调用时需要提供的”真名字“。也就是用来接收调用函数时传入的参数

14.注意:形参只有在函数被调用时,才会在内存中分配存储单元,用来存储数据,当函数执行完毕后,存储单元将被系统收回。

15.实际参数:用于给函数传值。出现在主调函数调用的表达式。

注意:在调用函数时,实参将赋值给形参,因此,必须注意实参的个数,而实参的类型一定要与形式参数类型一一对应,并且注意,一定要有确定的值。

注意:函数调用中,形参会拷贝实参的内容,传递参数是给函数传递信息的一种形式

17.XXX.h——头文件,函数的声明一般写在头文件里

18.XXX.m——实现文件,函数的定义一般写在实现文件里

19.函数的嵌套调用:C语言中,不允许函数的嵌套定义,但是可以嵌套使用

20.函数的嵌套调用:函数内调用函数

21.如果无返回值类型,默认的返回值则默认为int类型,所以,即使没有返回值,也得将返回值类型写为”void“类型

22.如果返回值与返回值类型不匹配,则定义的返回值类型为准

23.递归函数:

C语言中,允许函数内再次调用函数,称为函数的递归调用。也就是说,函数自己调用自己。

注意:函数的递归调用,一定要有一个出口。因为函数的递归就类似是一个循环,所以一定要有一个出口,否则就是死循环

24.局部变量:函数内部定义的变量,只有当前函数内有效,同样,主函数里的变量,也是如此,一个函数不能使用其他函数内定义的变量。函数执行完毕后的,系统会自动回收局部变量所占的内存。形参也是局部变量。

注意:

(1)不同函数内可以使用相同名字的函数,相互之间不会受到影响,所以他们所分配的内存单元也不相同。

(2)如果一个变量定义在一个分支结构中,这个变量只在当前结构内有效

25.全局变量:在函数外定义的变量,有效范围从定义的全局变量开始到文件的结束。

26.如果全局变量和局域变量名相同时,在局域变量作用范围内,以局部变量为准,全局变量失效。

注意:在开发过程中,除非有特殊需求,否则不要使用全局变量,因为所有函数都可以使用全局变量,我们不确定全局变量对哪个值作出了修改,造成数据问题。

27.从空间角度分为:局部变量和全局变量

28.从生命周期分为:静态存储和动态存储

(1)动态存储方式:比如函数中的局部变量,当函数中的局部变量,当函数执行完毕后,系统会将变量所分配的内存单元立刻收回

(2)静态存储方式:变量存储在静态区,比如全局变量,在程序运行开始,被分配内存单元,直到程序运行结束,才被系统收回

29.static:被它修饰的变量叫做静态变量,比如静态局部变量,静态全局变量。

时间: 2024-08-08 15:15:01

五、 函数的相关文章

PostgreSQL学习手册(五) 函数和操作符

PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:    常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:    下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < 小于 > 大于 <= 小于或等于 >= 大于或等于 = 等于 != 不等于 比较操作符可以用于所有可以比较的数据类型.所有比较操作符都是双目操作符,且返回boolean类型.除了比较操作符以外,我们还可以使用BETWEEN语句,如

四 指针与数组 五 函数

四 指针与数组 <一> 指针  就是地址 1 定义 int *p; 2 初始化 int a,*p=&a; 把a的地址给*p 指针变量有了谁的地址就是指向谁.则*p就代表了这个变量.*p代表 a 3 操作 int a ,*p=&a; *p=5;        <-----把5赋值给了a int *p,a; *p=[*&]a; | 抵消了 *p <=>a 等价 注意 : * 三个用途  1 乘法运算 2 取值运算符 3 说明符 定义时候用到 如 int a

笨鸟学php(五) 函数的声明与使用

1.函数的声明 <?php /** * function 函数名(参数1, 参数2.... ){ * 函数体; * 返回值; * } */ $sum = sum(3, 4); echo $sum; function sum($x, $y){ $sum = 0; $sum = $x * $x + $y + $y; return $sum; } ?> 2.变量的范围 局部变量: 在函数中声明的变量就是局部变量, 只能在自己的函数内部使用. 全局变量: 在函数外声明的变量就是全局变量, 在变量声明以

王爽-汇编语言-综合研究五-函数接收不定量参数

(一) 研究目的 我们知道,在C语言中,函数是可以传递参数的.有些函数在声明是就定义了要传的参数的个数,比如我们定义void a(int i);这说明函数a只接受一个int型参数.而有些函数,比如print函数,是可以接收不定个数的参数的.那函数是怎样接收不定量参数的呢? (二) 研究过程 1) 有限个数的参数 首先我们来看程序是如何传参数的.我们编写一个程序,让他传递有限个参数: 我们编译链接,然后反汇编查看其代码: 我们看其代码,首先,在main函数中,分别将‘a’与2对应的ASCLL码放到

深入理解PHP内核(五)函数的内部结构

php的函数包括用户定义的函数.内部函数(print_r count...).匿名函数.变量函数($func = 'print_r'; $func(array('a','b'));) PHP内核源码中将函数分为以下类型 #define ZEND_INTERNAL_FUNCTION 1 #define ZEND_USER_FUNCTION 2 #define ZEND_OVERLOADED_FUNCTION 3 #define ZEND_EVAL_CODE 4 #define ZEND_OVERL

Swift学习—教程学习五 函数(function)

5 函数(Functions) 函数是用来完成特定任务的独立的代码块. 5.1 定义与调用Defining and Calling Functions 函数名(参数列表)->返回值 { 函数体(要干什么) } 函数名用来描述其要完成的任务,调用函数时要向函数传递其要求的输入参数,参数顺序必须与函数参数列表一致. func greet(person: String) -> String { let greeting = "Hello, " + person + "!

JavaScript 基础(五) 函数 变量和作用域

函数定义和调用 定义函数,在JavaScript中,定义函数的方式如下: function abs(x){ if(x >=0){ return x; }else{ return -x; } } 上述abs() 函数的定义如下: function 指出这是一个函数定义; abs 是函数的名称: (x) 括号内列出函数的参数,多个参数以,分隔: {...}之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句. 注意:函数体内部的语句在执行时,一旦执行到return 时,函数就执行完毕,并将结果

实验五 函数程序设计

1. #include "stdafx.h" #include "math.h" int add (int a,int b){ int c; c=a+b; return c; } int minus (int a,int b){ int c; c=a-b; return c; } int multip (int a,int b){ int c; c=a*b; return c; } int quotient (int a,int b){ int c; c=a/b;

python基础(五)函数

一.函数概念 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 二.使用函数的好处 1.简化代码 2.提高代码的复用性 3.代码可扩展 三.py

mysql--补充(视图,触发器,事务,存储过程,函数)

一:视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 1.1 创建视图 #语法:CRE