1、函数的定义:
函数头+函数体,一般形式为:
返回值类型 函数名(参数列表)
{
函数体(函数实现特定功能的过程)
}
2、函数的声明:
返回值类型 函数名(参数列表);
3、返回语句
(1)返回语句的作用:
1) 利用返回语句能立即从所在的函数中退出,即返回到调用的程序中去;
2)返回语句能返回值。将函数值赋给调用的表达式中,当然有些函数没用返回值。
(2)函数返回值的说明:
1)函数的返回值都是通过函数中的return语句获得的,return语句奖被调用函数中的一个确定值返回到调用函数中
2)在定义函数时,要明确指出函数返回值的类型。
3)如果函数值的类型和return语句中表达式的值不一致,则以函数返回值的类型为准。数值型数据可以自动进行类型转换,即函数定义的返回值类型决定最终返回值的类型。
4、函数参数分为:形式参数和实际参数
形式参数:定义函数时,函数名后面括号中的变量名称,作用是占位,等待实参的代替
实际参数:在调用一个函数时,真正使用的一个函数时,函数名后面括号中的参数,即实际参数,也是计算的结果。
5、数组作为函数参数时:
只传递数组的地址,而不是将整个数组赋值到函数中。当用数组名做为实参调用函数时,指向该数组的
第一个元素的指针就被传递到函数中。
(1)数组元素作为函数参数
(2)数组名作为函数参数:此时实参与形参都使用数组名。
(3)可变长度数组作为函数参数:可将函数的参数声明成长度可变的数组,在此基础上利用上面的程序经行修改。
6、使用指针作为函数参数
此时,定义的的函数的参数为可变长度的数组。
7、主函数main的形式参数如下:
main(int argc,char*argv[])
argc参数保存命令行的参数个数,是整形变量。这个参数的值至少是1,因为至少程序名就是第一个参数。
argv参数是一个指向字符指针数组的指针,这个数组中的每一个元素都指向命令行实参。所有命令行实参都是字符串,任何数字都必须由程序转变成为适当的格式。
8、函数的调用方式:
(1)函数语句的调用方式:
Display();
(2)函数表达式调用:函数出现在一个表达式中,这时要求函数必须带回一个确定的值,而这个值则作为参加表达式运算的一部分。例如:iResult=iNum3*AddTwoNum(3,5); /*函数在表达式中*/
(3)函数参数调用:函数调用作为一个函数的实参,这样将函数返回值作为实参传递到函数中使用。例:iResult=AddTwoNum(10,AddTwoNum(3,5)); /*函数在参数中*/
9、递归调用:即每个函数都可以直接或间接地调用自己。所谓间接调用,是指在递归函数调用的下层函数中再调用自己。
10、局部变量:在一个函数内部的变量是局部变量。这些变量作用在函数内,不能被其他函数调用。
全局变量:在所有函数的外部声明的变量,即为全局变量。全局变量是可以在程序中的任意位置进行访问的变量。
11、数学中常用的函数:
(1)abs函数:求整数的绝对值。
int abs(int i);
(2)labs函数:求长整数的绝对值。
long labs(long n);
(3)fabs函数:返回浮点数的绝对值。
double fabs(double x);
(4)sin函数:正弦函数。
double sin(double x);
(5)cos函数:余弦函数。
double cos(double x);
(6)tan函数:正切函数。
double tan(double x);
(7)isalpha函数:检查字母,如果参数(ch)是字母表中的字母(大写或小写),则返回非零。要包含头文件ctype.h(字符分类函数库)
(8)isdigith函数:检查数字,如果ch是数字则函数返回非零值,否则返回零。要包含头文件ctype.h
(9)isalnum函数:检查字母或数字,是则返回非零值,不是则返回零。要包含头文件ctype.h