函数是什么?
函数是主函数以外的一个结构体,它可以通过我们写的语法来实现某些功能,当很多个这些功能单一的结构体一起放在主函数里,各自完成需要的功能,我们便可以编出一套很棒的程序,而不只是拘泥在main()里,只能的简单的printf功能,让程序变得更加复杂多彩~~
库函数
c语言的历史悠久,为了方便程序员们进行编译以及语言相对统一,可移植性高,于是便有了库函数的产生。
库函数是c语言中自带的实现一些功能的函数,要通过先应用对应头文件才可使用,c语言里的库函数有许多功能,很强大,但功能总是有限的。我们也要学会自己创造函数来实现,便有了自定义函数的说法。
想要查找学习库函数,有以下三个网站:
http://www.cplusplus.com/reference/
https://zh.cppreference.com/w/%E9%A6%96%E9%A1%B5
http://c.biancheng.net/ref/acos.html
自定义函数
自定义函数即为我们自己通过敲代码从而实现想要功能的函数,这些函数由我们自己创造,所以在使用时无需引用头文件,也没有头文件。
函数中的形参与实参
实参:调用时传过去的参数
可用范围:常量,变量,表达式,函数
形参:函数名后括号中的变量,被传的那个
注意!!形参只有在被调用的时候才会有内存单元,不然不存在在被调用完后自动销毁
函数的调用
传值调用:函数的形参与实参占有不同内存块,对形参修改不会影响实参
传址调用:在int* a=&a后,直接引用*a可代替a使用。才可以将函数与主函数的参数联系起来。
传址调用是一个好用的东西,看以下案例:
试着敲出以下代码:写出一个函数,做到将两个数字交换位置,做到
printf("交换前a=%d,b=%d\n", a, b); //输入20 10
swap(&a, &b);
printf("交换后a=%d,b=%d\n", a, b); //输出10 20
这样输出,但a,b的位置不改变,如果不行,继续往下领略传址调用的妙处~
我们要知道:用函数交换数字,函数里,形参只是实参的一份临时拷贝,而对实参无影响
此时主函数里开辟了两个地址来存放a,b两个数字,而在我们定义的swap函数里又开辟了两个地址来存放a,b里的数字,他们虽然数值相同,但是确实两块不同的地方,所以当我们在swap函数里交换之后,只是函数这两块地址里的数字改变,而做不到改变到主函数里面地址的数字,所以就要使用指针来解决这一问题。
void swap(int* a, int* b)
{
int z = 0;
z = *a;
*a = *b;
*b = z;
}
此时就能很好的找到主函数里a和b的地址,并且做到在a,b地址里交换数字这一操作了。