C语言·函数(超详细系列·全面总结)

张开发
2026/4/12 4:19:40 15 分钟阅读

分享文章

C语言·函数(超详细系列·全面总结)
前言Hello大家好我是心跳sy为了更好地形成一个学习c语言的体系最近将会更新关于c语言语法基础的知识今天更新一下函数的知识点我们一起来看看吧目录心跳sy的C语言专栏C语言知识点汇总到这了有兴趣的友友可以订阅看看哟~一、函数是什么在C语言中函数是一段完成特定任务的代码块它可以被多次调用接受输入参数并可选地返回一个值函数是结构化编程的基础允许程序员将一个大问题分解为多个小问题每个小问题由一个函数来封装这种方式提高了代码的可读性、可维护性和可重用性。二、C语言中函数的分类 1、️库函数️️C语言库函数是指在C语言标准库中预先定义好的函数这些函数包含在相应的头文件里每个函数都有其函数名、返回值类型和函数参数这些函数用于执行常见的任务例如输入输出、字符串处理、内存操作等。️C语言标准库是一组标准化的函数和工具旨在为C语言程序员提供基本的编程支持。库函数通常以源代码形式或预编译形式提供可以直接在C程序中使用而无需从零开始编写这些功能的代码以下情况使用的函数都属于库函数比如我们想把程序结果打印到屏幕上看看会频繁的使用一个功能将信息按照一定的格式打印到屏幕上printf。在编程的过程中我们会频繁的做一些字符串的拷贝工作strcpy。在编程是我们也计算总是会计算n的k次方这样的运算pow。2.1、库函数的使用要在C程序中使用库函数首先需要包含相应的头文件。例如使用 printf 函数需要在程序顶部添加以下代码#include然后就可以在程序中调用 printf 函数了int main() { printf(Hello, World!\n); return 0; }2.2、常用的库函数简单的总结C语言常用的库函数都有IO函数字符串操作函数字符操作函数内存操作函数时间/日期函数数学函数其他库函数因为具体的函数太多了这里不一一列举了我们在日常学习中需要养成查询库函数使用方法的习惯哦这里分享一个查询库函数的网站http://en.cppreference.com英文版2、️自定义函数️如果库函数能干所有的事情那还要程序员干什么️所以更加重要的是自定义函数自定义函数和库函数一样有函数名返回值类型和函数参数但是与库函数不一样的是这些都是我们自己来设计这就给程序员了一个很大的发挥空间。我们来看一个自定义的函数实现找出两个整数中的最大值#include //get_max函数的设计 int get_max(int x, int y) { return (xy)?(x):(y); } int main() { int num1 10; int num2 20; int max get_max(num1, num2); printf(max %d\n, max); return 0; }其中 get_max 就是我们自己定义的函数用于实现求两整数最大值的算法并在主函数中调用用 max 来接收返回值。三、函数的组成 1、️函数的基本组成️一个C语言函数通常由以下几个部分组成返回类型指定函数返回的数据类型。如果函数不返回任何值则使用 void 。函数名函数的名称用于调用该函数。参数列表一组定义在圆括号内的参数用于接受调用者传递给函数的数据。参数可以是多种数据类型甚至是其他函数。函数体包含在花括号 { } 中的代码块这里包含了函数执行的具体逻辑。️其中返回类型指定了函数执行完毕后返回的数据类型可以是整型、字符型、各种指针类型等如果函数不返回任何值则使用 void。例如int 表示函数返回一个整数void 表示函数不返回任何值。️函数名是函数的标识符用于在程序中调用该函数。我们在写函数时函数名应该清晰地反映函数的目的或行为。下面具体讲解如何使用函数2、️函数的参数️ 2.1、实际参数实参什么是实参️真实传给函数的参数叫实参️实参可以是常量、变量、表达式、函数等️无论实参是何种类型的量在进行函数调用时它们都必须有确定的值以便把这些值传送给形参。int main() { int years 30; char* person Alice; printMessage(years, person); // 函数调用years 和 person 是实参 return 0; }在这个例子中years 和 person 就是实参。2.2、形式参数形参️形式参数是指函数名后括号中的变量因为形式参数只有在函数被调用的过程中才实例化分配内 存单元所以叫形式参数。️形式参数当函数调用完成之后就自动销毁了因此形式参数只在函数中有效。️在函数定义时形参由它们的类型和名称组成例如void printMessage(int age, char* name) { printf(Name: %s, Age: %d\n, name, age); }在这个例子中age 和 name 就是形参。2.3、实参与形参的匹配️在函数调用时C语言编译器会检查实参与形参的类型和数量是否匹配。如果实参与形参的类型和数量不匹配可能会导致编译错误或运行时错误。例如以下代码将导致编译错误因为printMessage 函数期望两个参数但只提供了一个printMessage(Bob); // 编译错误缺少参数3、️函数的声明和定义️ 3.1、函数声明在调用函数之前必须声明函数。函数声明定义了函数的接口使得函数可以在其他部分被调用它通常放在程序的顶部或头文件中包括函数名、返回类型和参数列表。例如int add(int a, int b); // 声明一个返回int类型接受两个int参数的函数3.2、函数的定义函数定义是函数的实际实现它包括函数声明的所有部分再加上函数体函数体是一组语句它们定义了当函数被调用时执行的操作例如int add(int a, int b) { // 函数定义 int result a b; return result; }四、函数的调用函数调用是执行函数的过程。要调用一个函数只需使用函数名并提供必要的参数如果函数有参数的话。例如int sum add(3, 5); // 调用add函数并将返回值赋给sum变量完整的调用如下#include // 函数声明 int add(int a, int b); // 函数定义 int add(int a, int b) { int sum a b; return sum; } int main() { int result add(10, 20); // 函数调用 printf(Result: %d\n, result);//输出30 return 0; }五、函数的嵌套调用和链式访问 1、️嵌套调用️#include void new_line() { printf(hehe\n); } void three_line() { int i 0; for(i0; i3; i) { new_line();//继续调用 } } int main() { three_line(); return 0; }注意函数可以嵌套调用但是不能嵌套定义2、️链式访问️函数链式访问也称为函数链式调用是一种编程技巧是把一个函数的返回值作为另外一个函数的参数来调用。​ #include #include int main() { char arr[20] hello; int ret strlen(strcat(arr,bit));//求字符串长度 printf(%d\n, ret); return 0; } ​六、函数递归 1、️什么是递归️程序调用自身的编程技巧称为递归 recursion函数递归是指函数在执行过程中调用自身的一种技术。2、️递归的两个必要条件️递归函数通常包含两部分基线条件和递归条件基线条件是递归函数停止递归的条件而递归条件是递归函数继续调用自身的条件。递归是一种强大的编程技术它可以使代码更简洁、更优雅但需要小心使用以避免无限递归导致的栈溢出等问题。3、️递归的基本原理️递归函数通过反复调用自身来解决问题每次调用时问题规模都会减小直到达到基线条件递归停止。递归函数在调用自身时会创建一个新的函数栈帧用于存储局部变量和参数。当递归结束时这些栈帧会依次弹出恢复到最初的调用状态。4、️递归实例️计算阶乘#include // 递归函数计算阶乘 int factorial(int n) { // 基线条件 if (n 0) { return 1; } // 递归条件 else { return n * factorial(n - 1); } } int main() { int num 5; int result factorial(num); printf(%d! %d\n, num, result); return 0; }factorial 函数是一个递归函数它计算并返回一个整数的阶乘。当 n 等于0时函数返回1这是基线条件。否则函数调用自身并返回 n 乘以 factorial (n-1) 的结果当调用 factorial(5) 时以下是函数调用的过程第一次调用factorial(5) 因为 n 不等于0所以执行 return 5* factorial(4) 这次调用会暂停等待 factorial(4) 的结果。第二次调用factorial(4) n 不等于0执行 return 4* factorial(3) 这次调用会暂停等待factorial(3) 的结果如此下去直到第六次调用factorial(0), n 等于0所以触发基线条件返回1。当 factorial(0) 返回1时递归调用开始依次返回第五次调用返回factorial(1)返回 1*11第四次调用返回factorial(2)返回 2*12第三次调用返回factorial(3)返回 3*26第二次调用返回factorial(4)返回 4*624第一次调用返回factorial(5)返回 5*24120最终得出5的阶乘为120。函数篇到此结束感谢大家花费宝贵的时间阅读本文章制作不易希望大家多多支持呀如有任何问题欢迎各位大佬在评论区批评指正

更多文章