• 问题总会出现,不过解决问题的方法也会出现!!!

C语言基础学习笔记10

学习笔记 小雨 538次浏览 已收录 0个评论

—— ——-

3-函数的概念、分类

  1. 函数的概述

C源程序是由函数组成的。函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。

C语言不仅提供了丰富的库函数(如Turbo C,MS C都提供了三百多个库函数),还允许用户建立自己定义的函数。用户可以把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。可以说C程序的全部工作都是由各式各样的函数完成的,所以也把C语言称为函数式语言。

  1. 函数的分类

C语言中可从不同的角度对函数分类

  1. 从函数定义的角度看,函数可分为库函数和用户定义函数两种。stdio.h stdlib.h

库函数:由C系统提供,用户无需定义,也不必在程序中作类型说明,只需在程序前包含该函数原型的头文件即可在程序中直接调用。

printf、scanf、getchar、putchar、gets、puts、strcat等函数均属此类。

用户定义函数:由用户按需要写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用

  1. 语言的函数兼有其他语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。

有返回值函数:次函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。如数学函数即属于此类函数。由用户定义的这种要返回函数数值的函数,必须在函数定义和函数说明中明确返回值的类型。

无返回值函数:此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。这类函数类似于其他语言的过程。由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”,空类型的说明符为:“void”。

  1. 从主调函数和被调函数之间数据传送的角度看又可分为无参数函数和有参数函数。

无参函数:函数定义、函数说明及函数调用中均不带参数。主调函数和被调函数之间不进行参数传送。此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。

有参函数:也称带参函数。在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。在函数调用时也必须给出参数,称为实际参数(简称为实参)。进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。

  1. C语言提供了极为丰富的库函数,这些库函数又可从功能角度作一下分类。

字符型分类函数:用于对字符ASCII码分类:字母,数字,控制字符,分隔符,大小写字母等。

转换函数:用于字符或字符串的转换:在字符量和各类数字量(整型,实型等)之间进行转换;在大、小写之间进行转换。

目录路径函数:用于文件目录和路径操作。

诊断函数:用于内部错误检测。

图形函数:用于屏幕管理和各类图形功能。

输入输出函数:用于完成输入输出功能。

接口函数:用于与DOS,BIOS和硬件的接口。

字符串函数:用于字符串操作和处理。

内存管理函数:用于内存管理。

数学函数:用于数学函数计算。

日期和时间函数:用于日期,时间转换操作。

进程控制函数:用于进程管理和控制。

其它函数:用于其它各种功能。

以上各类函数不仅数量多,而且有的还需要硬件知识才会使用,因此要想全部掌握则需要一个较长的学习过程。应首先掌握一些最基本、最常用的函数,再逐步深入。

还应该指出的是,在C语言中,所有的函数定义,也包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。函数还可以自己调用自己,称为递归函数。

main函数是主函数,它可以调用其它函数,而不允许被其它函数调用。因此,C程序的执行总是从main函数开始,完成对其它函数的调用后再返回到main函数,最后由main函数结束整个程序。一个C源程序必须有,也只能有一个主函数main。

  1. 自定义函数的书写格式

用户定义函数:由用户自己写的函数。对已用户自定义函数,不仅要在程序中定义函数本身,而且在主程序中需要声明,然后才能使用。

函数定义到使用分三部分:1、声明。2、定义函数。3、调用函数。

函数的基本格式:

返回值类型  函数名称(函数参数){

函数体;

}

4-无参无返回值函数定义

一般形式如下:

void 函数名(){

声明部分//定义局部变量

语句

}

void无返回值函数:此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回执行结果,这类函数类似于其他语言的过程;由于函数无返回值,用户在定义此类函数时可指定其函数返回值为“空类型”。

C语言基础学习笔记10

5-无参有返回值函数定义

一般形式如下:

返回值类型 函数名(){

声明部分

语句

return 返回值类型变量或常量;//返回给主调函数

}

其中返回值类型和函数名称为函数头。

返回值类型指明了本函数的返回值类型。函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可以少。

{}中的内容称为函数体。在函数体中声明部分,是对函数体内部所用到的变量的类型说明。

在很多情况下都不要求无参数有返回值,此时函数类型符可以写为void。

6-有参无返回值函数定义

一般形式如下:

void 函数名 (形式参数列表){

声明部分

语句

}

形式参数表列表的格式:类型 变量名,类型 变量2,………..

7-有参有返回值函数定义

一般形式如下:

返回值类型 函数名(形式参数表列){

声明部分

语句

return 返回值类型变量或常量;

}

有参函数比无参函数多了一个内容,即形式参数列表。在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,必须在形参表中给出形参的类型说明。

注意:定义函数时函数名不能重复

8-函数的参数

形参出现在函数定义中,在整个函数体内部都可以使用,离开该函数则不能使用。

C语言基础学习笔记10

  1. 形式参数介绍和使用

定义函数的时候,函数名后面小括号中的参数,简称形参。

形式参数是什么样类型的数据,那么实际参数也必须是什么样的类型

函数内部不可以定义与函数形参同名的变量,因为形参与函数的代码是一个代码块

  1. 实际参数介绍和使用

调用函数的时候,函数名后面小括号中的参数,简称实参。

实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作函数值的传递。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向北调函数的数据传递。

 

9-函数的参数传递过程

  1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即可释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
  2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
  3. 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生“类型不匹配”的错误。

C语言基础学习笔记10

10-函数的返回值及注意事项

  1. 函数的返回值

函数的值(或称函数返回值)是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。

  1. 使用注意事项

  2. 函数的值只能通过return语句返回主调函数。return语句的一般形式:

return 表达式;或者为return (表达式);

该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。

  1. 函数返回值的类型和return实际返回的值类型应该保持一致。如果两者不一致,则以return实际类型为准,自动进行类型转换。

C语言基础学习笔记10

  1. 如果函数值为整形,在函数定义时可以省去类型说明。

也就是说如果没有指定返回类型,那么C语言默认是int的类型(开发中不要省略返回值类型)C语言基础学习笔记10

  1. 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。

为了使程序由良好的可读性并减少出错,凡不要求返回值的函数都应定义为空类型。

 

11-函数的声明

在主调函数中调用某函数之前应对该被调函数进行说明(声明),这与使用变量之前要先进行变量说明是一样的。

在主调函数中对被调函数作说明的目的是使编译系统知道被调函数返回值的类型,以便在主调函数中按此种类型对返回值作相应的处理。其一般形式为:

返回值类型 被调函数名(类型 形参,类型 形参···);

或为 返回值类型 被调函数名(类型,类型···);

如:int max(int a,int b);

int max(int,int);

注意:

  1. 如果被调函数的返回值是整形时,可以不对被调函数作说明,而直接调用。这时系统将自动对被调函数返回值按整形处理。

C语言基础学习笔记10

  1. 当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用

C语言基础学习笔记10

  1. 普通的函数声明

C语言基础学习笔记10

12-函数的调用及嵌套调用

  1. 函数的调用

C语言中,函数调用的一般形式为:

函数名(实际参数表);

对无参函数调用时则无实际参数表。

实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。

各实参之间用逗号分隔。

  1. 函数表达式

int z=0;

z=max(23,80)+1;

  1. 函数语句

printf(“%d”,a);

printf(“%d”,&b);

  1. 函数实参

函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。

printf(“%d”,max(20,30));

  1. 函数名不能和函数名同名

C语言基础学习笔记10

15-递归函数概述及构成条件

  1. 递归函数概述及用法

一个函数再它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。

C语言基础学习笔记10

这个函数是一个递归函数。但是运行该函数将无休止的调用其自身,当然这是不正确的。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的方法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。

  1. 递归函数构成条件
  2. 自己调用自己
  3. 存在一个条件能够让递归结束
  4. 问题的规模能够缩小

本博客内容既有转载自网络的内容,也有本作者原创内容,仅供学习与交流之用
如有侵权或者错误之处,请及时在下方留言!
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址