模块化程序设计之函数的传值调用,动态变量,静态变量
模块化程序设计之传值调用,动态变量,静态变量
一、函数的传值调用
调用函数时,对于有形参的被调函数,则主调函数必须将每个实参的值传递给相应的形参变量。即相当于把实参值赋值给形参变量,形参变量会将实参的赋值在内存中临时开辟空间保存起来,当调用函数执行完毕时,这些临时开辟空间就会被释放,并且形参的值的变换不会影响到实参变量的值
由以下代码理解函数的传值调用
int main()
{
void add(int,int);//函数的声明
int a,b;
a=6;
b=6;
add(a,b);
printf("实参a的值为:%d\n",a);
}
void add(int a,int b)
{
int c;
a=2*a;
printf("形参a的值为:%d\n",a);
c=a+b;
}
二、动态变量和静态变量
*动态存储 *和 静态存储 是指变量的存储方式,即变量使用内存空间的方式,它决定了变量的性质。
动态存储:程序执行过程中,使用到变量时才分配存储单元,使用完毕立即释放。如局部变量。
静态存储:程序开始执行时,就给变量分配存储单元,并且一直保持,直至整个程序结束才释放。如全局变量。
动态变量即动态存储的变量,静态变量即静态存储的变量。它们占用内存的时间不同,这种属性即为变量的生存周期。
注意:static定义局部变量时,其值将被保留(若定义时为赋初始值,则系统会自动赋值为0);定义为全局变量,其有效范围为它所在的源文件,其他源文件不能使用。
由以下代码理解static定义局部变量
int main()
{
for(int i=0;i<3;i++)
{
addT(i);
}
}
void addT(int b)
{
static int a=0;
a+=b;
printf("局部静态变量的值为:%d\n",a);
}
由结果知,局部静态变量的值每次执行并没有被释放,而是被保留了下来。