目录
1、函数的定义、调用、声明
1.1函数的定义
当 C编译系统提供的标准数据库不满足用户需要时,用户可以自己定义函数
C语言中函数的基本格式为:
函数类型 函数名 (类型1 形式参数1,类型2 形式参数2,……类型n 形式参数n)
{
说明部分
语句部分
}
说明:
(1)一般将函数类型 函数名 (类型1 形式参数1,类型2 形式参数2,……类型n 形式参数n)称为函数的首部,或函数头;大括号内称为函数体。
(2)函数类型,即:函数值的类型
(3)函数名用合法标识符命名,最好能够有见名知意的效果,函数名后紧跟一对小括号,中间不要加空格
(4)形式参数简称形参,指函数中的自变量,它们是从函数外部向函数内部运送值的数据通道。形式参数根据需要可以有1个、多个或没有。定义时每个形参(自变量)都应指出各自的类型
(5)函数体主要包括变量说明和可执行语句,两者可以根据情况缺省。若都为空,也合法,称为空函数
(6)变量说明部分主要是定义运算所需要的变量。因为这些变量在函数的内部定义,又称为局部变量。只在函数内部有效,不能在函数外使用
(7)语句部分主要是利用已定义的变量进行运算,得到结果
(8)有些函数末尾会写return语句,相当于是从函数内部向函数外部运送值的数据通道。返回值类型需要跟函数类型匹配,即:赋值兼容。若程序不需要计算结果,那就将此函数类型写为void。
注意:
一个函数中可以有多个return语句
return语句后面可以是变量、常量、表达式,也可以用小括号将它括起来
若无return语句,遇到函数结尾的“}”时,程序自动返回调用函数
函数类型最好与return语句返回的值类型保持一致,若不一致,函数结果以函数类型为准,由C编译系统自动完成类型转换。
例如
int f(int a,int b)
{
int s;
s=a+b;
return s;
}
1.2 函数的调用
函数定义完毕后,需要使用一下,验证函数定义是否正确。
使用C程序的函数,称为函数调用,函数调用的格式:
函数名(实际参数1,实际参数2,……,实际参数n);
实际参数简称实参,可以是常量、变量、表达式。实参的个数、类型应该跟形参一一对应匹配。实参主要是用于给形参一一对应传送数据。
1.3函数调用的形式
使用函数调用的形式有:
(1)函数调用作为一条语句;
(2)函数有明确的返回值时,函数调用可以当作普通变量使用,作为表达式的一部分。
(3)函数有明确的返回值时,函数调用可以作为其他函数的实参。
1.3.1代码演示
题目1:编写函数是吸纳打印输出以下图形的功能
/*
*
***
*****
*******
*/
#include <stdio.h>
void printStar(){
int i,j,k;
for(i=0;i<=3;i++){//行数
for(j=0;j<=2-i;j++)//空格
{
printf(" ");
}
for(k=0;k<=2*i;k++){
printf("*");
}
printf("\n");
}
}
int main(){
printStar();
return 0;
}
题目2:定义pow函数,实现求的功能。只考虑x和y均为正整数的情况
#include<stdio.h>
int pow(int x,int y){
int i,p=1;
for(i=1;i<=y;i++){
p*=x;
}
return p;
}
int main(){
printf("%d的%d次方是%d\n",5,3,pow(5,3));
return 0;
}
题目3:定义bigger函数,实现求2个整数中较大值的功能。利用此函数求3个整数中的最大值
//定义bigger函数,实现求2个整数中较大值的功能。利用此函数求3个整数中的最大值
#include<stdio.h>
int bigger(int a,int b){
return a>b?a:b;//求a,b中较大值作为结果返回
}
int main(){
int x,y,z,max;
printf("请输入三个需要比较的数:");
scanf("%d%d%d",&x,&y,&z);
max=(bigger(bigger(x,y),z));//三个数需要调用两次
printf("最大值为:%d\n",max);
return 0;
}
1.4函数的声明
为了防止C编译系统会提示找不到函数,可以在函数调用前面加上函数声明。
1.4.1函数声明的格式
函数声明由函数首部加上分号组成。例如:函数f的函数声明为:int f(int a,int b);也可以将参数名省略,例如:int f(int,int);。
函数声明使用
#include<stdio.h>
int f(int a,int b);//函数声明
int main(){
int c;
c=f(3,5);
printf("c=%d\n",c);
return 0;
}
int f(int a,int b){
int s;
s=a+b;
return s;
}
2、函数参数的传值
2.1 单向传递
当基本类型的常量或变量