1. 函数的定义
函数是 C/C++ 中的一种重要结构,用于封装一段代码,使其可以被多次调用,从而减少代码重复。
1.1 函数的基本格式
语法:
cpp返回类型 函数名(参数列表) { 函数体; }示例:
cppint max(int x, int y) { return x > y ? x : y; }
1.2 定义一个求两个数最大值的函数
问题背景:
- 如果直接在主程序中多次比较两个数的最大值,会导致代码重复。
- 通过定义一个函数来求两个数的最大值,可以减少重复工作量。
示例:
cpp#include <stdio.h> // 函数的定义 int max(int a, int b) { return a > b ? a : b; } int main() { int a = 1; int b = 2; int max1 = max(a, b); int c = 3; int d = 4; int max2 = max(c, d); printf("max1 = %d\n", max1); printf("max2 = %d\n", max2); return 0; }
2. 函数的调用
函数的调用是指在程序中使用已经定义的函数。
2.1 无参函数调用
语法:
cpp函数名();注意:
- 如果是调用无参函数,则不能加上实参,但括号不能省略。
示例:
cpp#include <stdio.h> // 函数的定义 void test() { printf("Hello, World!\n"); } int main() { // 函数的调用 test(); // 正确 // test(250); // 错误,函数定义时没有参数 return 0; }
2.2 有参函数调用
语法:
cpp函数名(实参1, 实参2, ...);注意:
- 实参与形参的个数应相等,类型应匹配(相同或赋值兼容)。
- 实参与形参按顺序对应,一对一地传递数据。
- 实参可以是常量、变量或表达式,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值。
示例:
cpp#include <stdio.h> // 函数的定义 void test(int a, int b) { printf("a = %d, b = %d\n", a, b); } int main() { int p = 10, q = 20; test(p, q); // 正确 test(11, 30 - 10); // 正确 // test(int a, int b); // 错误,不应该在圆括号里定义变量 return 0; }
3. 函数的返回值
函数的返回值是指函数执行完毕后返回给调用者的结果。
3.1 返回值的定义
语法:
cpp返回类型 函数名(参数列表) { 函数体; return 表达式; }注意:
- 如果函数定义没有返回值,函数调用时不能写
void关键字,调用函数时也不能接收函数的返回值。
- 如果函数定义没有返回值,函数调用时不能写
示例:
cpp#include <stdio.h> // 函数的定义 void test(int a, int b) { printf("a = %d, b = %d\n", a, b); } int main() { int p = 10, q = 20; test(p, q); // 正确 test(11, 30 - 10); // 正确 // test(int a, int b); // 错误,不应该在圆括号里定义变量 return 0; }
3.2 带返回值的函数
- 示例:cpp
#include <stdio.h> // 函数的声明 int max(int x, int y); int main() { int a = 10, b = 25, num_max = 0; num_max = max(a, b); // 函数的调用 printf("num_max = %d\n", num_max); return 0; } // 函数的定义 int max(int x, int y) { return x > y ? x : y; }
4. 函数的声明与定义
函数定义:
- 对函数功能的确立,包括指定函数名、函数类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
函数声明:
- 把函数的名字、函数类型以及形参的个数、类型和顺序通知编译系统,以便在对包含函数调用的语句进行编译时,据此对其进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。
示例:
cpp#include <stdio.h> // 函数的声明 int max(int x, int y); int main() { int a = 10, b = 25, num_max = 0; num_max = max(a, b); // 函数的调用 printf("num_max = %d\n", num_max); return 0; } // 函数的定义 int max(int x, int y) { return x > y ? x : y; }
5. return 与 exit 函数
return:- 在
main函数中调用return结束程序。 - 在子函数中调用
return只是结束该子函数,并返回到调用处继续执行。
- 在
exit:- 在
main函数中调用exit也会结束程序。 - 在子函数中调用
exit会立即终止整个程序。
- 在
示例:
cpp#include <stdio.h> #include <stdlib.h> // 包含 exit 函数 void sub_function() { printf("进入子函数\n"); exit(0); // 立即终止整个程序 // printf("退出子函数\n"); // 这行代码不会被执行 } int main() { printf("进入主函数\n"); sub_function(); // printf("退出主函数\n"); // 这行代码不会被执行 return 0; }
总结
函数的定义:
- 语法:
返回类型 函数名(参数列表) { 函数体; } - 示例:
int max(int x, int y) { return x > y ? x : y; }
- 语法:
函数的调用:
- 无参函数调用:
函数名(); - 有参函数调用:
函数名(实参1, 实参2, ...);
- 无参函数调用:
函数的返回值:
- 语法:
return 表达式; - 示例:
int max(int x, int y) { return x > y ? x : y; }
- 语法:
函数的声明与定义:
- 函数定义:完整的函数实现。
- 函数声明:通知编译系统函数的存在。
return与exit函数:return:结束当前函数。exit:终止整个程序。
