62函数的定义 621一般格式 函数返回值类型 合法标识符 缺省int型 无返回值void 格式一: 函数类型函数名(形参类型说明表) 函数体 说明部分((即:变量定义)) 语句部分 例无参函数 例有参函数 printstar( 例空函数 int max(intx,nty) printf(**********n);) dummy()( intz; 或 printstar(void rn(z); pint(“****n),} 函数体为空 ☆☆第章画数
☆☆ 第6章 函数 11 ▪ 6.2.1一般格式 函数返回值类型 合法标识符 缺省int型 无返回值void 函数类型 函数名(形参类型说明表) 函数体 { 说明部分( (即:变量定义)) 语句部分 } 格式一: 例 有参函数 int max(int x,int y) { int z; z=x>y?x:y; return(z); } 例 有参函数 int max(int x, y) { int z; z=x>y?x:y; return(z); } 例 空函数 dummy( ) { } 函数体为空 例 无参函数 printstar( ) { printf(“**********\n”); } 或 printstar(void ) { printf(“**********\n”); } 6.2 函数的定义
62函数的定义 622函数返回值 C语言通过 return语句获得函数返回值的,其格式如下: return表达式;或 return(表达式); °说明: 表达式的值即函数返回值,它应与所定义的函数返回 值的类型一致 个函数可以有多条 return语句,执行到哪一条 return语句,哪一条起作用 return语句的另一作用是终止执行函数 为增加程序的可读性,建议只在函数结尾处使用一次 return语句 ☆☆第章画数
☆☆ 第6章 函数 12 6.2 函数的定义 ❖6.2.2 函数返回值 ▪ C语言通过return语句获得函数返回值的,其格式如下: ▪ return 表达式; 或 return(表达式); •说明: 表达式的值即函数返回值,它应与所定义的函数返回 值的类型一致 一个函数可以有多条return语句,执行到哪一条 return语句,哪一条起作用 return语句的另一作用是终止执行函数 为增加程序的可读性,建议只在函数结尾处使用一次 return语句
62函数的定义 例6-3编写一个函数求一个3位正整数的逆序数,如123的逆序数是321。 #include <stdio.h> int fun(int n) /函数声明 void maino Int X,y do i printf( Enter a number x=?:); scanf(%d", &x); } while(x<100|x>999); fun(x 函数调用 printf("Inverse number: %d\n",y) int fun(int n) 函数定义 t int a, b, c, m; a=n%10 b=n/10%10 C=n/100; m=a*100+b*10+e; return(m);
☆☆ 第6章 函数 13 6.2 函数的定义 ❖6.2.3 形式参数的设计 ▪ 设计形式参数应从函数的功能分析入手,那个数据需要调用 函数提供,这就应定义一个形式参数接收该数据。 例6-3 编写一个函数求一个3位正整数的逆序数,如123的逆序数是321。 #include <stdio.h> int fun(int n); //函数声明 void main() { int x,y; do { printf(" Enter a number x=?:"); scanf("%d",&x); }while(x<100||x>999); y=fun(x); //函数调用 printf("Inverse number:%d\n",y); } int fun(int n) //函数定义 { int a,b,c,m; a=n%10; b=n/10%10; c=n/100; m=a*100+b*10+c; return(m); }
62函数的定义 ◆624函数原型 在使用自定义函数时,除了进行函数的定义外,还需要在调 用该函数之前对其进行原型声明 说明: (1)函数原型声明语句最后的分号不能省略,其作用是表示该语句 是进行函数声明而不是函数定义 (2)在原型声明中,形式参数名可以省略。 (3)如果被调用函数的定义出现在调用函数之前,可以不对被调用 函数进行原型声明。 (4)如果被调用函数已在所有函数定义之前进行了原型声明,则在 各个调用函数中不必再对该函数进行原型声明 ☆☆第章画数
☆☆ 第6章 函数 14 6.2 函数的定义 ❖6.2.4 函数原型 ▪ 在使用自定义函数时,除了进行函数的定义外,还需要在调 用该函数之前对其进行原型声明 ▪ 函数原型声明和函数定义的区别 • 函数原型声明的作用是将函数类型告诉编译系统,使程序 在编译阶段对调用函数的合法性进行全面的检查,避免函 数调用时出现参数的个数或类型不一致的运行错误。 • 函数定义部分则是函数的实际实现代码 ▪ 函数原型声明的格式:类型符函数名(形式参数); 说明: (1)函数原型声明语句最后的分号不能省略,其作用是表示该语句 是进行函数声明而不是函数定义。 (2)在原型声明中,形式参数名可以省略。 (3)如果被调用函数的定义出现在调用函数之前,可以不对被调用 函数进行原型声明。 (4)如果被调用函数已在所有函数定义之前进行了原型声明,则在 各个调用函数中不必再对该函数进行原型声明
例:函教说明誰例 void nf void main() floa float a, b floa int 现在主调函数之 scar scanf("%,%r;,&a,&b);说明 C c=max(a, b) prin printf("Max is %d\n", c) float a max(float, float y) fl 0a float z; z=z=x>y?x:yim型函数可不作函数说明 retu return(z); (BC、VC下不行) ☆☆第章画数 15
☆☆ 第6章 函数 15 例: 函数说明举例 float add (float x, float y) { float z; z = x + y; return (z); } void main ( ) { float a, b, c; scanf ("%f,%f", &a, &b); c = add (a, b); printf ("sum is %f", c); } 被调函数出现在主调函数之 前,不必函数说明 void main( ) { float add(float,float); //函数原型声明 float a, b ,c; scanf ("%f,%f", &a, &b); c = add (a, b); printf ("sum is %f", c); } float add (float x, float y) { float z; z = x + y; return (z); } void main ( ) { float a,b; int c; scanf ("%f,%f", &a, &b); c = max (a, b); printf ("Max is %d\n", c); } max (float x, float y) { float z; z = x > y ? x : y; return (z); } int型函数可不作函数说明 (BC、VC下不行)