C语言之函数
函数
为什么需要函数
避免了重复性操作
有利于程序的模块化
什么叫函数
逻辑上:能够完成特定功能的独立的代码单元
物理上:
能够接受数据【当然也可以不接受数据】
能够对接受的数据进行处理
能够将数据处理的结果返回【当然也可以不返回任何值】
总结:函数是一个工具,它是为了解决大量类似问题而设计的
函数可以当做一个黑匣子
如何定义函数
函数的返回值 函数的名字(函数的形参列表)
{
函数体
}
- 函数定义的本质是详细描述函数之所以能够实现某个特定功能的具体方法
- return表达式的含义:
- 函数返回值的类型也称为函数的;诶新,因为如果函数名前的返回值类型和函数执行体中的return 表达式;中表达式的类型不同的话,则最终函数返回值的类型,以函数名前的返回值类型为准
1 #include <stdio.h> 2 3 void max(int i, int j) 4 { 5 if (i > j) 6 printf("%d\n", i); 7 else 8 printf("%d\n", j); 9 10 } 11 12 int main(void) 13 { 14 15 int a, b,c,d; 16 a = 3, b = 5,c=8,d=6; 17 max(a, b); 18 max(c, d); 19 20 return 0; 21 }
函数的分类
有参函数和无参函数
有返回值函数和无返回值函数
库函数和用户自定义函数
值传递函数和地址传递函数
普通函数和主函数(main函数)
- 一个程序必须有且只有一个主函数
- 主函数可以调用普通函数,普通函数不能调用主函数
- 普通函数可以相互调用
- 主函数是程序的入口,也是程序的出口
1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 4 bool IsPrime(int val) 5 { 6 int i; 7 8 for ( i = 2;i < val;i++) 9 { 10 if (val % i == 0) 11 break; 12 } 13 14 if (i == val) 15 return true; 16 else 17 return false; 18 } 19 20 int main(void) 21 { 22 int m; 23 24 scanf("%d", &m); 25 if (IsPrime(m)) 26 printf("Yes!\n"); 27 else 28 printf("No!\n"); 29 30 return 0; 31 }
函数的声明
#include <stdio.h> void f(void); //函数的声明,分号不能丢掉 int main(void) { f(); return 0; } void f(void) { printf("哈哈哈!\n"); }
注意的问题
函数调用和函数定义的顺序
- 如果函数调用写在了函数定义的前面,则必须加函数前置声明
- 函数前置声明的作用:
- 告诉编译器即将可能出现的若干个字母代表的是一个函数
- 告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的具体情况
- 函数声明是一个语句,末尾必须加分号
- 对库函数的声明是通过#include<库函数所在的文件的名字.h>来实现的
- 形参和实参
- 个数相同 位置一一对应,数据类型必须相互兼容
- 如何在软件开发中合理的设计函数来解决实际问题
- 一个函数的功能尽量独立,单一
- 多学习,多模仿牛人的代码
1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include <stdio.h> 3 4 //本函数的功能是判断是否是素数 5 bool IsPrime(int); //函数的声明,分号不能丢掉 6 7 //本函数的功能是把1到n之间所有的素数显示器上输出 8 void TraverseVal(int n); 9 10 int main(void) 11 { 12 int val; 13 int i; 14 15 scanf("%d" , &val); 16 17 18 TraverseVal(val); 19 20 21 return 0; 22 } 23 24 bool IsPrime(int m) 25 { 26 int i; 27 28 for (i = 2; i < m;++i) 29 { 30 if (0 == m % i) 31 break; 32 } 33 34 if (i == m && i != 2) 35 return true; 36 else 37 return false; 38 39 } 40 41 void TraverseVal(int n) 42 { 43 int i; 44 45 for (i = 2;i <= n;i++) 46 { 47 if (IsPrime(i)) 48 printf("%d\n", i); 49 } 50 }
常用的系统函数
函数是C语言的基本单位,类是Java,C#,C++的基本单位
double sqrt(double x);求x的平方根
int abs(int x);求x的绝对值
double fabs(double x) 求x的绝对值
递归
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库