【C语言入门学习】函数的概念
前言
在数学中,函数是核心思想之一;同样,在计算机语言中,函数也是编程的核心思想。函数通过将代码结构化,帮助我们简化复杂的程序逻辑。
一、函数的定义
根据维基百科的定义:子程序,子程序是计算机程序中负责完成某项特定任务的一段代码。它由一个或多个语句块组成,相较于其他代码,具备较高的独立性。子程序通常有输入参数和返回值,提供过程的封装与细节的隐藏,且多被集成为软件库中的函数。
二、函数的分类
- 库函数
- 自定义函数
为什么需要库函数?
C语言的标准库中提供了大量的库函数,旨在减少重复编写常用功能的代码,避免重复造轮子。库函数帮助我们高效地解决常见问题,提高开发效率。
如何查找库函数?
以下是常用的库函数查询网站:
提示:cppreference 支持在 Edge 浏览器中安装插件,URL 搜索框中输入 “cc”+“空格” 可以快速查询函数的定义、使用方式及对应的封装库。
常见的库函数
- IO函数:如
printf
、scanf
- 字符串操作函数:如
strlen
- 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其他库函数
示例代码
1 | #define _CRT_SECURE_NO_WARNINGS 1 |
在C语言中,库函数的使用需要通过 #include
指令包含相应的头文件:
#include < >
:用于引用标准库头文件,路径指向编译器的标准库目录。#include " "
:用于引用自定义头文件,路径指向工程目录。
三、自定义函数
编写自定义函数可以根据具体需求设计功能,增强代码的灵活性,提升代码重用率和可读性。
函数的基本结构:
1 | 返回值类型 函数名(形参列表) { |
示例1:找出两个数中的最大值
1 | int get_max(int x, int y) { |
示例2:交换两个数的值
Swap1:不通过指针交换值
1 | void Swap1(int x, int y) { |
Swap2:通过指针交换值
1 | void Swap2(int* pa, int* pb) { |
主函数示例
1 | int main() { |
示例1 运行结果
1 | 20 |
解释:get_max
函数正确返回了较大的数。
示例2 运行结果1
1 | 交换前:a=10 b=20 |
问题分析:
- Swap1 函数无法成功交换两个变量的值,因为传递给函数的实参被复制为形参,函数内部修改的仅是形参,不会影响原实参。
示例2 运行结果2
1 | 15 |
问题解决:
- Swap2 函数通过指针操作了实参的内存地址,从而实现了变量交换。指针使得函数可以直接操作变量的值,而不是操作拷贝的形参。
板书总结
总结
- 掌握库函数:养成查阅库函数文档的习惯,学会利用工具来提高编程效率。
- 理解形参与实参的区别:函数中的形参是实参的拷贝,改变形参不会影响实参,除非通过指针传递内存地址。
- 学会自定义函数:通过定义自定义函数,编写更加灵活和可维护的代码。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Turin's Blog!