函数的分类和定义汇总
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果函数值的类型和return语句中表达式的值不
一致,则以函数类型为准。 例1:编一个调用求两个整数最大公约数函数的程序。
main ( ) { int i, j, k; int gcd (int, int); printf ("\n Input two integers:"); scanf ("%d%d", &i, &j); k=gcd(i, j); printf("Greatest common divisor is %d", k); } int gcd ( int m, int n) { int i, t; for ( i=1; i<= (m<=n?m:n); i++) if (m%i==0&&n%i==0) t=i; return t; }
函数中可有多处 return ,只要一处被执行,函
数就结束调用而返回。因此,函数最多只能有 一个返回值。 • 凡不要求返回值的函数,一般应用void定义为 “无类型”(或称“空类型”),系统就保证不 使 函数带回任何值。 • 函数值类型为指针型的函数称为指针型函数。
例2:输入一字符串,将字符串中的小写字母变成大 写字母,并输出结果。 main() char *strupper(char *s) { char a [80]; { int i; char *strupper(char *) for(i=0;*(s+i)!='\0';i++) printf("\ninput a string:"); if(*(s+i)>='a'&&*(s+i)<='z') gets(a); *(s+i) - =32; printf("%s",struppeΒιβλιοθήκη Baidu(a)); return s; } }
• 函数名: 标识符,函数的名称。 • 参数说明表:由带数据类型说明的参数构成: 类型名 变量名,类型名 变量名,... 这里的变量名称为形式参数,不给出具体数值。 调用该函数时,给出具体数值,称为实际参数。 • 函数体:由说明语句和执行语句组成的程序模块。
例1:编制一个将小写字母变为大写字母的函数。 char low_to_upper (char c) { if (c>='a'&&c<='z') return c - =32; return c; } 例2:编制一函数,功能为打印 n 个空格。 void print_space ( int n ) { int i; for (i=0; i<n; i++ ) printf(" ") ; }
7.1.1 函数的分类
在C语言中可从不同的角度对函数分类 : • 从函数定义的角度 : 自定义函数和系统库函数 • 从主调函数和被调函数之间数据传送的角度: 有参函数和无参函数 • 从有无返回值的角度 : 有返回值函数和无返回值函数
7.1.2
函数的定义
函数定义的一般格式: 函数值类型 函数名(参数说明表) { 函数体 } 其中: • 函数值类型:函数返回值的类型。如:int float double char void 等 ,缺省按整型处理。 无返回值的函数,函数值类型可选用void,如: void putpixel(int x,int y,int color) 函数返回值是指针,应选用相应的指针类型标识 符,如:char *gets(char *string)
例3:把字符串 t 接在字符串s之后, 返回新字符串首 地址。 char *strjion (char *s, char *t) { char *p; p=s; /*保存s*/ while (*s) s++; /* 找字符串s末尾*/ while (*s++=*t++); /*连接*/ return p; /*返回指向连接后新字符串的指针*/ }
2. 函数的返回值 • 终止执行函数有两种情况: 遇到return语句或其他中止函数执行的语句。 执行到函数最后一个右大括号。 • 函数的返回值是通过函数中的return语句实现的:
return 表达式; 或 return(表达式); 其中表达式的值就是返回给主调函数的值。 如果表达式为空表达式,则无直接的返回值。
七、函数
7.1 7.2 7.3 7.4 7.5 7.6 函数的分类和定义 函数的说明和调用 函数的嵌套调用 函数的递归调用 变量的作用域和存储类别 预处理命令
7.1 函数的分类和定义
• 函数是C源程序的基本模块, 它封装了完成某 一特定功能的程序代码和数据。 • C语言不仅提供了极为丰富的库函数(如Turbo C提供了四百多个库函数),还允许用户建立 自己定义的函数。
例3:编制求两整数最大公约数(greatest common divisor)的函数。 int gcd ( int a, int b) int gcd ( int m, int n) { int temp; { int i, t; while(b) for (i=1;i<=(m<=n?m:n); i++) { temp=a%b; if (m%i==0&&n%i==0) t=i; a=b; return t; b=temp; } } return a; }
7.2 函数的说明和调用
7.2.1 函数的说明 • 调用函数必须遵循“先说明后调用”的原则。 对库函数须把包含该函数原型(说明)的头文件 用include命令包含在源文件前部 Turbo C 中编有400 多个标准库函数。按功能分类 编组,分别在不同的头文件予以说明。 头文件 功 能 math.h 常用数学函数 stdio.h 输入输出函数 ctype.h 字符函数 string.h 字符串函数
• 函数说明的一般形式: 函数值类型 函数名(参数说明表); 如函数值是整型或字符型,可不必说明; 如被调函数的定义在主调函数之前,可不必说明; 如不说明函数参数,系统不检查参数传递正确性; 参数说明表中可只说明形参类型,而无形参本身。
7.2.2 函数调用及返回值
1. 函数的调用 • 一般形式: 函数名(实参表) 实参的类型、个数和顺序应与定义时的形参一致。 • 调用方式: 函数表达式:要求函数是有返回值的。 函数语句 : 函数调用的一般形式加上分号即构成函数语句。 函数实参: 函数作为另一个函数调用的实参出现,要求函数 是有返回值的。
一致,则以函数类型为准。 例1:编一个调用求两个整数最大公约数函数的程序。
main ( ) { int i, j, k; int gcd (int, int); printf ("\n Input two integers:"); scanf ("%d%d", &i, &j); k=gcd(i, j); printf("Greatest common divisor is %d", k); } int gcd ( int m, int n) { int i, t; for ( i=1; i<= (m<=n?m:n); i++) if (m%i==0&&n%i==0) t=i; return t; }
函数中可有多处 return ,只要一处被执行,函
数就结束调用而返回。因此,函数最多只能有 一个返回值。 • 凡不要求返回值的函数,一般应用void定义为 “无类型”(或称“空类型”),系统就保证不 使 函数带回任何值。 • 函数值类型为指针型的函数称为指针型函数。
例2:输入一字符串,将字符串中的小写字母变成大 写字母,并输出结果。 main() char *strupper(char *s) { char a [80]; { int i; char *strupper(char *) for(i=0;*(s+i)!='\0';i++) printf("\ninput a string:"); if(*(s+i)>='a'&&*(s+i)<='z') gets(a); *(s+i) - =32; printf("%s",struppeΒιβλιοθήκη Baidu(a)); return s; } }
• 函数名: 标识符,函数的名称。 • 参数说明表:由带数据类型说明的参数构成: 类型名 变量名,类型名 变量名,... 这里的变量名称为形式参数,不给出具体数值。 调用该函数时,给出具体数值,称为实际参数。 • 函数体:由说明语句和执行语句组成的程序模块。
例1:编制一个将小写字母变为大写字母的函数。 char low_to_upper (char c) { if (c>='a'&&c<='z') return c - =32; return c; } 例2:编制一函数,功能为打印 n 个空格。 void print_space ( int n ) { int i; for (i=0; i<n; i++ ) printf(" ") ; }
7.1.1 函数的分类
在C语言中可从不同的角度对函数分类 : • 从函数定义的角度 : 自定义函数和系统库函数 • 从主调函数和被调函数之间数据传送的角度: 有参函数和无参函数 • 从有无返回值的角度 : 有返回值函数和无返回值函数
7.1.2
函数的定义
函数定义的一般格式: 函数值类型 函数名(参数说明表) { 函数体 } 其中: • 函数值类型:函数返回值的类型。如:int float double char void 等 ,缺省按整型处理。 无返回值的函数,函数值类型可选用void,如: void putpixel(int x,int y,int color) 函数返回值是指针,应选用相应的指针类型标识 符,如:char *gets(char *string)
例3:把字符串 t 接在字符串s之后, 返回新字符串首 地址。 char *strjion (char *s, char *t) { char *p; p=s; /*保存s*/ while (*s) s++; /* 找字符串s末尾*/ while (*s++=*t++); /*连接*/ return p; /*返回指向连接后新字符串的指针*/ }
2. 函数的返回值 • 终止执行函数有两种情况: 遇到return语句或其他中止函数执行的语句。 执行到函数最后一个右大括号。 • 函数的返回值是通过函数中的return语句实现的:
return 表达式; 或 return(表达式); 其中表达式的值就是返回给主调函数的值。 如果表达式为空表达式,则无直接的返回值。
七、函数
7.1 7.2 7.3 7.4 7.5 7.6 函数的分类和定义 函数的说明和调用 函数的嵌套调用 函数的递归调用 变量的作用域和存储类别 预处理命令
7.1 函数的分类和定义
• 函数是C源程序的基本模块, 它封装了完成某 一特定功能的程序代码和数据。 • C语言不仅提供了极为丰富的库函数(如Turbo C提供了四百多个库函数),还允许用户建立 自己定义的函数。
例3:编制求两整数最大公约数(greatest common divisor)的函数。 int gcd ( int a, int b) int gcd ( int m, int n) { int temp; { int i, t; while(b) for (i=1;i<=(m<=n?m:n); i++) { temp=a%b; if (m%i==0&&n%i==0) t=i; a=b; return t; b=temp; } } return a; }
7.2 函数的说明和调用
7.2.1 函数的说明 • 调用函数必须遵循“先说明后调用”的原则。 对库函数须把包含该函数原型(说明)的头文件 用include命令包含在源文件前部 Turbo C 中编有400 多个标准库函数。按功能分类 编组,分别在不同的头文件予以说明。 头文件 功 能 math.h 常用数学函数 stdio.h 输入输出函数 ctype.h 字符函数 string.h 字符串函数
• 函数说明的一般形式: 函数值类型 函数名(参数说明表); 如函数值是整型或字符型,可不必说明; 如被调函数的定义在主调函数之前,可不必说明; 如不说明函数参数,系统不检查参数传递正确性; 参数说明表中可只说明形参类型,而无形参本身。
7.2.2 函数调用及返回值
1. 函数的调用 • 一般形式: 函数名(实参表) 实参的类型、个数和顺序应与定义时的形参一致。 • 调用方式: 函数表达式:要求函数是有返回值的。 函数语句 : 函数调用的一般形式加上分号即构成函数语句。 函数实参: 函数作为另一个函数调用的实参出现,要求函数 是有返回值的。