数学函数
在数学中学习过的函数在编程中可以继续使用,需要加上头文件math.h。
#include <math.h>
#include <stdio.h>
int main(void)
{
double pi = 3.1416;
printf("sin(pi/2)=%f ln1=%f\n", sin(pi/2), log(1.0));
//sin(pi/2)=1.000000 ln1=0.000000;
return 0;
}
在Linux下使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项【gcc main.c -lm】,因为数学函数位于libm.so库文件中,-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。
自定义函数
自定义函数即定义自己的函数。如main()函数就是自定义的一个函数,main函数的特殊之处在于执行程序时它自动被操作系统调用,操作系统就认准了main这个名字,除了名字特殊之外,main函数和别的函数没有区别。
#include<stdio.h>
void line()
{
printf("\n");
}
void twoline()
{
line();
line();
}
int main()
{
twoline();
}
根据上面简单例子理解:
- 同一个函数可以被多次调用。
- 可以用一个函数调用另一个函数,后者再去调第三个函数。
- 通过自定义函数可以给一组复杂的操作起一个简单的名字,例如twoline。对于main函数来
说,只需要通过twoline这个简单的名字来调用就行了。 - 使用自定义函数可以使代码更简洁。
- 使用函数前必须声明该函数。
//函数声明
void line();
形参和实参
- 定义一个带参数的函数,需要在函数定义中指明参数的个数和每个参数的类型。
void MyPrint(int a,int b)
{
printf("%d %d",a,b);
}
int main()
{
MyPrint(2,3);
}
上面的代码,当说a.b这两参数时,我们所说的“参数”是指形参当我们讨论传一个参数2、3给函数时,我们所说的“参数”是指实参。
注意:定义变量时可以把相同类型的变量列在一起,而定义参数却不可以。
- 形参相当于函数中定义的变量,调用函数传递参数的过程相当于定义形参变量并且用实参的值来初始化。
全局变量、局部变量
局部变量:把函数中定义的变量称为局部变量,由于形参相当于函数中定义的变量,所以形参也是一种局部变量。
- 一个函数中定义的变量不能被另一个函数使用。
- 每次调用函数时局部变量都表示不同的存储空间。
全局变量:定义在所有的函数体之外,它们在程序开始运行时分配存储空间,在程序结束时释放存储空间,在任何函数中都可以访问全局变量。