- 函数的定义:
函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。例如,scanf( ),printf( )等为库函数,由C语言系统提供定义,编程时只要直接调用即可。自定义函数需要用户自己定义。
函数定义的一般形式为:
函数类型 函数名(形式参数表) /*函数首部*/
{
函数实现过程 /*函数体*/
}
- 函数的调用:
在C语言中,调用标准库函数时,只需要在程序的最前面用 #include 命令包含相应的头文件:调用自定义函数时,程序中必须有与调用函数相对应的函数定义。
1.函数调用过程:
任何C程序执行,首先从主函数 main( )开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原来暂停的位置继续执行。
2.函数原型声明:
C语言要求函数先定义后调用,就像变量一样。如果自定义函数被放在主调函数后面,就需要在函数调用前,加上函数原型声明。函数声明的目的只要是说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。函数声明的一般格式为:
函数类型 函数名(参数表);
3.函数调用的形式:
对于实现计算功能的函数,函数调用通常会出现在两种情况下(cylinder()中,使用变量radius,height作为实参):
(1)赋值语句:volumn = cylinder( radius,height);
(2)输出函数的实参:printf(“%f”,cylinder(radius,height);
函数调用的一般形式为:
函数名(实际参数列表) /*实际参数(简称实参)可以是常量、变量和表达式。*/
- 局部变量:
C语言中把定义在函数内部的变量称为局部变量,局部变量的有效作用范围局限于所在的函数内部。形参是局部变量。
使用局部变量可以避免各个函数之间的变量互相干扰。
除了作用于函数的局部变量外,C语言还允许定义作用于复合语句中的局部变量,其有效使用范围被局限于复合语句内,一般用作小范围内的临时变量。
int main(void)
{
int a=1; /*主函数的局部变量*/
{ /*复合语句开始*/
int b=2; /*复合语句内的局部变量*/
···
} /*复合语句结束*/
printf("%d",a);
return 0;
}
- 全局变量:
定义在函数外而不属于任何函数的变量称为全局变量。全局变量的作用范围是从定义开始到程序所在文件的结束,它对作用范围内所有的函数都起作用。
全局变量的定义格式与局部变量完全一致,只是定义位置不在函数内,它可以定义在程序的头部,也可以定义在两个函数的中间或者程序尾部,只要在函数内即可。
由于全局变量和局部变量的作用范围不同,允许它们同名。当某函数的局部变量与全局变量同名时,在该函数中全局变量不起作用,而由局部变量起作用。对于其他不存在同名变量的函数,全局变量仍然有效。同样,当函数局部变量与复合语句的局部变量同名时,以复合语句为准。
/*全局变量定义*/
#include <stdio.h>
int x; /*定义全局变量x*/
int f();
int main(void)
{
int a=1;
x=a; /*对全局变量x赋值1*/
a=f(); /*a的值为4*/
{
int b=2;
b=a+b; /*b的值为6*/
x=x+b; /*全局变量运算*/
}
printf("%d%d",a,x);
return 0;
}
int f()
{
int x=4; /*x为局部变量,在本函数中,全局变量x不起作用*/
return x;
}
运行结果
4 7