将常用的整体实现某个功能的代码块封装起来,用到的时候可以直接调用
函数也是模块化编程的一种体现
函数类型 函数名(形参类型 形参名,形参类型 形参名,…………)
{
函数的执行语句;
return 返回的值;
}
函数类型就是函数的返回值类型
1)无形参 无返回值
2)有形参 无返回值
3)无形参 有返回值
4)有形参 有返回值
#include
void print_c(void) // 无形参无返回值的函数定义
{
printf(“this is C1!!!\n”);
printf(“this is C2!!!\n”);
}
int main(void)
{
void print_c(void); // 函数的声明
print_c(); // 函数的调用
print_c();
getchar();
return 0;
}
#include
// 如果函数的定义在主函数之前,可以不用函数声明
void print_c(void) // 无形参无返回值的函数定义
{
printf(“this is C1!!!\n”);
printf(“this is C2!!!\n”);
}
//函数的声明可以放到主函数的起始位置,也可以放到主函数上面
//void print_c(void); 函数的声明
int main(void)
{
//void print_c(void); // 函数的声明
print_c(); // 函数的调用
print_c();
getchar();
return 0;
}
什么叫函数的声明:
告诉编译器有这个函数存在
函数声明的定义方式:
函数原型+分号
什么时候用函数声明:
#include
void print_c(void); // 函数的定义在主函数之后,在主函数执行之前,要声明该函数
int main(void)
{
print_c();
print_c();
return 0;
}
void print_c(void)
{
printf(“this is C1!!!\n”);
printf(“this is C2!!!\n”);
}
什么叫形参,什么叫实参,形参和实参有什么关系
形参:在定义函数的时候假设的要传递到执行语句进行运算的参数,形参是这个函数和调用这个函数的程序的接口
实参:具体调用函数的时候替换形参参与运算的参数
在调用函数的时候实参的个数要和形参的个数相同
实参的类型要和形参的类型一致
用函数实现判断两个数的大小,并输出比较结果
#include
void compare(int vx, int vy); // 函数的声明
int main(void)
{
compare(3,4); // 函数的调用 3 4是具体传入函数要运算的数 3 4 就是实参
getchar();
return 0;
}
// 定义一个函数,比较两个数的大小,并输出比较结果
void compare(int vx, int vy) // vx vy 就是int型的两个形参,假设参与运算的数
{
if (vx > vy)
printf("%d>%d",vx,vy);
else if (vx < vy)
printf("%d<%d", vx, vy);
else
printf("%d=%d", vx, vy);
}
#include
void compare(int vx, int vy); // 函数的声明
int main(void)
{
int a = 5, b = 6;
compare(a,b); // 函数的调用 3 4是具体传入函数要运算的数 3 4 就是实参
getchar();
return 0;
}
// 定义一个函数,比较两个数的大小,并输出比较结果
void compare(int vx, int vy) // vx vy 就是int型的两个形参,假设参与运算的数
{
if (vx > vy)
printf("%d>%d",vx,vy);
else if (vx < vy)
printf("%d<%d", vx, vy);
else
printf("%d=%d", vx, vy);
}
有返回值,函数调用时候要接收函数的返回值,注意返回值类型
#include
int print_c(void);
int main(void)
{
int rec;
rec = print_c(); // 严格意义上来说函数有返回值,调用函数的时候必须接收返回值
printf(“rec = %d\n”, rec);
getchar();
return 0;
}
int print_c(void)
{
printf(“this is C1!!!\n”);
printf(“this is C2!!!\n”);
return 1; // 函数有类型 也就是函数有返回值 就需要return返回
} // return可以返回空值
A)函数实现判断两个数,如果两者的值相同,函数返回1
B)如果不同,交换两个变量的值并输出交换后的结果,返回0
#include
int change(int num1, int num2);
int main(void)
{
int rec;
rec = change(4,5);
printf(“rec = %d\n”,rec);
return 0;
}
int change(int num1, int num2)
{
int tmp;
if (num1 == num2)
{
printf("%d = %d\n", num1, num2);
return 1;
}
else
{
printf(“src = %d %d\n”, num1, num2);
tmp = num1;
num1 = num2;
num2 = tmp;
printf(“des = %d %d\n”, num1, num2);
return 0;
}
}
存在多种返回值情况,实现形参的数值交换
#include
int change(int num1, int num2);
int main(void)
{
int rec, x = 5, y = 6;
rec = change(x,y); // 函数值的传递是单向的
// 函数地址传递是会更改地址当中的值的
// C++函数形参的引用
printf(“rec = %d\n”,rec);
printf(“main = %d %d\n”, x, y);
getchar();
return 0;
}
int change(int num1, int num2)
{
int tmp;
if (num1 == num2)
{
printf("%d = %d\n", num1, num2);
return 1;
}
else
{
printf(“src = %d %d\n”, num1, num2);
tmp = num1;
num1 = num2;
num2 = tmp;
printf("des = %d %d\n", num1, num2);
return 0;
}
}