怎么建免费论坛网站网站背景图片切换
怎么建免费论坛网站,网站背景图片切换,wordpress 活动,做网站什么框架方便目录
一.引言
二.核心概念
1.函数的分类
2.函数的组成
3.C语言中函数的定义
4.特殊函数例子
三.数学直觉
四.代码实现
1. 无参无返函数
2. 无参有返函数
3. 有参无返函数
4. 有参有返函数
5. 递归函数
6. 指针参数函数
五.最后总结 一.引言 大家好#xff0c;我…目录一.引言二.核心概念1.函数的分类2.函数的组成3.C语言中函数的定义4.特殊函数例子三.数学直觉四.代码实现1. 无参无返函数2. 无参有返函数3. 有参无返函数4. 有参有返函数5. 递归函数6. 指针参数函数五.最后总结一.引言大家好我是你们的小洛上篇文章我们聊了不同形式的数组今天我们聚焦 C 语言的核心 ——函数。数学中的函数是用公式表达规律而 C 语言的函数则是用代码封装功能二者底层逻辑相通但落地形式各有特点。二.核心概念1.函数的分类从用户角度库函数用户自定义函数从参数角度无参函数有参函数从返回值角度无返回值函数有返回值函数2.函数的组成函数头(包含类型标识符函数名参数列表)函数体3.C语言中函数的定义将特定功能的代码封装成一个独立的可复用的模块通过参数列表接收输入通过返回值提供输出实现代码的模块化和复用。4.特殊函数例子递归函数一种特殊的自调用函数通过调用自身实现问题的递归求解体现了分治算法思想。递归必须有终止条件否则会导致栈溢出。其他特殊调用方式的函数特殊调用方式调用对象触发方式典型应用递归调用自身函数内部分治算法回调调用未知函数通过指针事件处理内联调用自身展开编译时性能优化可变参数多个参数运行时格式化输出间接调用指向的函数运行时多态实现主函数特殊情况系统程序启动程序入口注main函数作为程序入口由操作系统自动调用是每个C程序必不可少的特殊函数它不属于上述调用方式分类。三.数学直觉我认为C语言的函数就是一个加工工厂你放入原材料参数经过加工函数体最后得到结果return返回值或者printf打印结果一个程序是由一个主工厂主函数和多个附属小工厂用户自定义或库函数联合作用而产生的并且只有在调用时才分配栈内存创建栈帧发挥它的作用。数学中的函数本就和C语言中的函数没有什么太大的区别甚至可以说C语言的函数是由数学中的函数翻译实现的他们的底层逻辑以及想要表达的意义是一样的。不过C语言的函数更“接地气”——它除了可以返回计算结果还能改变程序状态如修改外部变量、打印输出而数学函数是纯粹的输入输出映射。四.代码实现1. 无参无返函数#include stdio.h // 无参无返函数不接收参数不返回值 void print_hello() { printf(Hello, World!\n); printf(这是一个无参无返函数的示例\n); } int main() { // 调用无参无返函数 print_hello(); print_hello(); // 可以多次调用 return 0; } //Hello, World! //这是一个无参无返函数的示例 //Hello, World! //这是一个无参无返函数的示例2. 无参有返函数#include stdio.h #include time.h #include stdlib.h int generate_random() { // 仅生成随机数不重复初始化种子 return rand() % 100 1; } int main() { // 只初始化一次随机数种子 srand(time(NULL)); int random_num generate_random(); printf(生成的随机数%d\n, random_num); printf(再次生成的随机数%d\n, generate_random()); return 0; } //生成的随机数42 //再次生成的随机数783. 有参无返函数#include stdio.h // 有参无返函数接收参数不返回值 void print_student_info(char name[], int age, float score) { printf(学生信息\n); printf(姓名%s\n, name); printf(年龄%d\n, age); printf(成绩%.2f\n, score); } int main() { // 调用有参无返函数 print_student_info(张三, 18, 85.5); printf(\n); print_student_info(李四, 19, 92.0); return 0; } //学生信息 //姓名张三 //年龄18 //成绩85.50 //学生信息 //姓名李四 //年龄19 //成绩92.004. 有参有返函数#include stdio.h // 有参有返函数接收参数返回值 int calculate_sum(int numbers[], int count) { int sum 0; for(int i 0; i count; i) { sum numbers[i]; } return sum; } int main() { // 测试数据 int nums[] {1, 2, 3, 4, 5}; int size 5; // 调用有参有返函数 int total calculate_sum(nums, size); printf(数组元素之和%d\n, total); // 计算平均值 float average (float)total / size; printf(数组元素平均值%.2f\n, average); return 0; } //数组元素之和15 //数组元素平均值3.005. 递归函数#include stdio.h // 递归函数调用自身 int fibonacci(int n) { // 基准情况 if(n 0) return 0; if(n 1) return 1; // 递归情况 return fibonacci(n - 1) fibonacci(n - 2); } int main() { // 计算斐波那契数列的前10项 printf(斐波那契数列前10项\n); for(int i 0; i 10; i) { printf(%d , fibonacci(i)); } printf(\n); return 0; } // 注意此递归实现时间复杂度为O(2^n)n较大时建议使用循环或记忆化搜索。 //递归虽直观但深度过大会导致栈溢出实际开发中需谨慎控制递归层数。 //斐波那契数列前10项 //0 1 1 2 3 5 8 13 21 346. 指针参数函数#include stdio.h // 指针参数函数通过指针修改外部变量 void swap_values(int* a, int* b) { int temp *a; *a *b; *b temp; } int main() { int x 10, y 20; printf(交换前x %d, y %d\n, x, y); // 调用指针参数函数 swap_values(x, y); printf(交换后x %d, y %d\n, x, y); return 0; } //交换前x 10, y 20 //交换后x 20, y 10五.最后总结总的来说函数就像一个个功能独立的‘加工工厂’主函数是总控中心调用各个子工厂自定义函数 / 库函数协同完成程序功能。数学函数追求规律的简洁表达C 语言函数则兼顾功能实现与可读性宏观上都是‘输入 - 处理 - 输出’的核心逻辑这也是函数的本质所在。函数不仅是代码复用的单元更是模块化设计的基石。掌握函数就掌握了构建复杂程序的钥匙。下节预告指针内存的门牌号系统