1135 字
6 分钟
【C语言入门】05 - 函数
【C语言入门学习】函数的概念
前言
在数学中,函数是核心思想之一;同样,在计算机语言中,函数也是编程的核心思想。函数通过将代码结构化,帮助我们简化复杂的程序逻辑。
一、函数的定义
根据维基百科的定义:子程序,子程序是计算机程序中负责完成某项特定任务的一段代码。它由一个或多个语句块组成,相较于其他代码,具备较高的独立性。子程序通常有输入参数和返回值,提供过程的封装与细节的隐藏,且多被集成为软件库中的函数。
二、函数的分类
- 库函数
- 自定义函数
为什么需要库函数?
C语言的标准库中提供了大量的库函数,旨在减少重复编写常用功能的代码,避免重复造轮子。库函数帮助我们高效地解决常见问题,提高开发效率。
如何查找库函数?
以下是常用的库函数查询网站:
提示:cppreference 支持在 Edge 浏览器中安装插件,URL 搜索框中输入 “cc”+“空格” 可以快速查询函数的定义、使用方式及对应的封装库。
常见的库函数
- IO函数:如
printf、scanf - 字符串操作函数:如
strlen - 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其他库函数
示例代码
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>
int main1() { // 库函数的应用示例 char arr1[20] = {0}; char arr2[] = "hello world";
// 字符串拷贝 strcpy(arr1, arr2); printf("%s\n", arr1);
// 设置内存块 memset(arr1, 'x', 5); printf("%s\n", arr1);
return 0;}在C语言中,库函数的使用需要通过 #include 指令包含相应的头文件:
#include < >:用于引用标准库头文件,路径指向编译器的标准库目录。#include " ":用于引用自定义头文件,路径指向工程目录。
三、自定义函数
编写自定义函数可以根据具体需求设计功能,增强代码的灵活性,提升代码重用率和可读性。
函数的基本结构:
返回值类型 函数名(形参列表) { // 函数体 return 返回值; // 如需要返回值}
示例1:找出两个数中的最大值
int get_max(int x, int y) { int z = 0; if (x > y) z = x; else z = y; return z; // 返回最大值z}示例2:交换两个数的值
Swap1:不通过指针交换值
void Swap1(int x, int y) { int temp = x; x = y; y = temp;}Swap2:通过指针交换值
void Swap2(int* pa, int* pb) { int temp = *pa; // 解引用,获取pa指向的值 *pa = *pb; // 交换两者的值 *pb = temp;}主函数示例
int main() { int a = 10; int b = 20;
// 使用get_max函数获取最大值 int max = get_max(a, b); printf("%d\n", max); // 输出最大值
// 交换两个整型变量的值 printf("交换前:a=%d b=%d\n", a, b); Swap1(a, b); // 形参不影响实参 printf("交换后:a=%d b=%d\n", a, b); // 无法交换成功
int* pa = &a; // pa是指向a的指针 *pa = 15; // 通过指针修改a的值 printf("%d\n", a); // 输出修改后的a
printf("交换前:a=%d b=%d\n", a, b); Swap2(&a, &b); // 通过指针传递,交换值 printf("交换后:a=%d b=%d\n", a, b); // 成功交换
return 0;}示例1 运行结果
20解释:get_max 函数正确返回了较大的数。
示例2 运行结果1
交换前:a=10 b=20交换后:a=10 b=20问题分析:
- Swap1 函数无法成功交换两个变量的值,因为传递给函数的实参被复制为形参,函数内部修改的仅是形参,不会影响原实参。
示例2 运行结果2
15交换前:a=15 b=20交换后:a=20 b=15问题解决:
- Swap2 函数通过指针操作了实参的内存地址,从而实现了变量交换。指针使得函数可以直接操作变量的值,而不是操作拷贝的形参。
板书总结

总结
- 掌握库函数:养成查阅库函数文档的习惯,学会利用工具来提高编程效率。
- 理解形参与实参的区别:函数中的形参是实参的拷贝,改变形参不会影响实参,除非通过指针传递内存地址。
- 学会自定义函数:通过定义自定义函数,编写更加灵活和可维护的代码。
【C语言入门】05 - 函数
http://www.turinblog.cn/posts/c语言入门05---函数/