C语言学习笔记之(函数)
一、格式
1.无参定义
定义无参函数的一般形式为:
类型说明符 函数名()
{
函数体
}
或
类型说明符 函数名(void)
{
函数体
}
函数名后面括号内的void表示“空”,即函数没有参数。
2.有参定义
定义有参函数的一般形式为:
类型说明符 函数名(形式参数声明)
{
函数体
}
有参函数在函数名后的括号内必须有形式参数(简称“形参”)表,用于调用函数和被调函数之间的数据传递,故必须对其进行类型说明,这由形式参数声明部分完成。一般情况下,函数中需要多少个原始数据,函数的形参表中就应有多少个形参,每个形参存放一个数据,形参之间用逗号隔开。例如:
int min(int a,int b)
{
int c;
c=a<b?a:b;
return (c);
}
这是一个求a和b两数中较小值的函数,函数的类型说明符为int型,表示函数的返回值为整型。a和b是形式参数,它接受主调函数的实际参数,两个参数的类型声明用逗号分隔。花括号内是函数体,其中,“int c;”是函数体中的数据定义,后面一条语句用于求a和b中的较小者,return语句的作用是将c的值作为函数值返回到主调函数中。
3.空函数
C语言中可以有“空函数”,它的形式为:
类型说明符 函数名(){ }
例如:
void triangle() {}
调用此函数时,什么工作也不做。在主调函数中写“triangle();”,表明这里要调用一个函数而现在这个函数不起作用,等以后扩充函数功能时再补上。
例子:用程序模拟组织学生打扫教室卫生问题,用函数调用的方式实现。
#include <stdio.h>
void window() /*定义window函数,执行擦窗户功能*/
{
printf("They are cleaning windows!\n");
}
void desk() /*定义desk函数,执行擦桌子功能*/
{
printf("They are cleaning desks!\n");
}
void floor() /*定义floor函数,执行扫地功能*/
{ printf("They are cleaning the floor!\n");
}
int main()
{
window(); /*调用window函数*/
desk(); /*调用desk函数*/
floor(); /*调用floor函数*/
return 0;
}
二、函数的调用
函数调用的一般形式为:
函数名(实际参数表列)
需要说明以下几点:
1.如果调用无参函数,则“实际参数表列”可以没有,但括号不能省略。
2.实际参数(简称“实参”)表中实参的类型及个数必须与形参相同,并且顺序一致。当有多个实参时,参数之间用逗号隔开。
3.实参可以是常量、有确定值的变量或表达式及函数调用。
例子1:求两个实数的平均值。
#include<stdio.h>
float average(float x,float y) /*定义函数用于计算两数的平均值,x和y为形参*/
{
float av; /*定义变量av用于存放平均值*/
av=(x+y)/2.0; /*求平均值*/
return av; /*返回av的值*/
}
int main()
{
float a=1.8,b=2.6,c;
c=average(a,b); /*实参为确定值的变量*/
printf("The avergae of %5.2f and %5.2f is %5.2f\n",a,b,c);
c=average(a,a+b); /*实参为表达式*/
printf("The avergae of %5.2f and %5.2f is %5.2f\n",a,a+b,c);
c=average(2.0,4.0); /*实参为常量*/
printf("The avergae of 2.0 and 4.0 is %5.2f\n",c);
c=average(c,average(a,b)); /*实参为函数调用*/
printf("The avergae is %5.2f\n",c);
}
例子2:输入两个实数,用一个函数求出两数中较小数。
#include <stdio.h>
int main()
{
float x,y,z;
float min(float a,float b); /*函数声明*/
printf("Please enter two numbers:");
scanf("%f,%f",&x,&y);
z=min(x,y); /*函数调用*/
printf("min is %f\n",z); /*输出结果*/
return 0;
}
float min(float a,float b) /*函数定义*/
{
float c;
if(a>b) /*比较大小,将较小数赋值给c*/
c=b;
else
c=a;
return c; /*返回值为c*/
}
程序第5行是对被调用的min函数的声明:
float min(float a,float b);
从程序中可以看到,main函数的位置在min函数的前面,而程序编译时是从上到下逐行进行的。如果没有对min函数的声明,当编译到程序第8行(z=min(x,y);)时,编译系统将无法确定min是不是函数名,也无法判断实参(x和y)的类型和格式是否正确,因此,在调用函数前必须对被调函数加以声明。
三、返回语句和函数返回值
1.格式
一般情况下,主调函数调用完被调函数后,都希望能够得到一个确定的值,这就是函数的返回值。在C语言中,函数返回值是通过return语句来实现的。return语句的一般形式有三种:
return (表达式);
return 表达式;
return;
2.例子:返回最小值
#include <stdio.h>
int main()
{
float x,y,z;
int min(float a,float b); /*函数声明*/
printf("Please enter two numbers:");
scanf("%f,%f",&x,&y);
z=min(x,y); /*函数调用*/
printf("min is %f\n",z); /*输出结果*/
return 0;
}
int min(float a,float b) /*函数定义*/
{
float c;
if(a>b) /*比较大小,将较小数赋值给c*/
c=b;
else
c=a;
return c; /*返回值为c*/
}
C语言学习笔记之(函数)
https://www.wsjj.top/archives/c11
评论