c语言函数
函数的定义
函数就是将一段可用代码进行封装,实现某种功能,达到代码的重复利用,也可以理解为一个子程序,其本身就是为了实现某种功能,将实现功能的代码进行打包而已。
函数的类别
主要分为:
- 库函数
最常见的库函数如printf()
scanf()
等。每个头文件都包含了不同的库函数,也可以将头文件理解为函数的库,使用时进行加载引用即可调用 - 自定义函数
由用户自己编写的函数,工程的主要功能实现,一般都靠自定义函数。业务逻辑也大都由此完成。
如何查找库函数
库函数其实有很多,我们不能把他们所有的都记住,显然是不现实的,那我们如何查找这些函数呢?
给大家推荐两个工具:
函数的语法
有返回值时:
/* type -> 返回值类型
name -> 函数名称
parameter ->参数
value - > 返回值
*/
type name(type parameter)
{
statement;
return value;
}
无返回值:
void name(type parameter)
{
statement;
}
函数命名规范
- 蛇形命名法 : num_max
- 驼峰命名法 : intNumMax
函数参数
部分函数在进行调用时需要进行传参,下面就写一个简答的函数为大家演示一下:
//函数功能:输出两个数的最大值,相等时,则输出其中一个
int max(int a,int b)
{
if(a > b)
{
return a;
}
else if(a == b)
{
print("两数相等")
return a;
}
else
{
return b;
}
}
在函数调用时:
max(9,8);
必须传参
疑惑?
那么想一想,传入的参数后,会不会改变传入变量的值?
如果我们想通过函数改变这个变量呢?怎么实现?
题目:
编写一个函数,功能:将这两个数交换。
void swap(int a,int b)
{
int num;
num = a;
a = b;
b = num;
}
运行结果:没有交换x和y的值,这是为什么呢?
既然没有交换两个变量的值,那么肯定是我们的函数出现的问题,那么如何解决呢?
原因:我们传入的参数,只是将值交换了,但并没有重新将交换的值赋值给变量。
解决思路:如果我们将变量的指针传给函数,此时将变量的指针进行交换,也就达到了将变量的值交换的目的
实现:
void swap(int *pa,int *pb)
{
int num;
num = pa;
pa = pb;
pb = num;
}
结果:此时正确的将我们的目的实现了。
总结
之所以将总结设置为一级标题,是因为我感觉总结和知识同样重要。
我们在需要在函数内对参数的值进行改变的时候,通常传入参数的地址,操作参数的地址,也就直接的操作了参数的值,对于只需要进行值得判断、输出等不需要改变变量的值的时候,传入变量即可。