模块化程序设计之函数的传值调用,动态变量,静态变量

版权声明:转载请注明 https://blog.csdn.net/qq_34720818/article/details/86751266

模块化程序设计之传值调用,动态变量,静态变量

一、函数的传值调用
调用函数时,对于有形参的被调函数,则主调函数必须将每个实参的值传递给相应的形参变量。即相当于把实参值赋值形参变量,形参变量会将实参的赋值在内存中临时开辟空间保存起来,当调用函数执行完毕时,这些临时开辟空间就会被释放,并且形参的值的变换不会影响到实参变量的值

由以下代码理解函数的传值调用

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);
}

在这里插入图片描述
由结果知,局部静态变量的值每次执行并没有被释放,而是被保留了下来。

猜你喜欢

转载自blog.csdn.net/qq_34720818/article/details/86751266