临时变量的解说和验证
Posted 语风之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了临时变量的解说和验证相关的知识,希望对你有一定的参考价值。
目录
一、什么是临时变量?
1、生命周期
2、作用范围
二、验证临时变量的特性
1、证明临时变量的开辟
2、证明临时变量有生命周期和作用范围
三、总结
一、什么是临时变量?
临时变量指的是未在程序开头部分声明的,待使用它时才声明类型的变量。常见的如函数中定义的变量,循环语句、条件语句中声明定义的变量。这些变量具有生命周期和作用范围。
1、生命周期:
函数调用时开辟空间形成变量,该变量在函数调用完成以后自动销毁,释放空间。这段存在的时间为生命周期。(从变量声明开始到相应程序段结束)
2、作用范围:
局部变量作用范围为被定义的函数内有效,即“{ }”内有效。(被定义的局部范围内)
二、验证临时变量的特性
1、代码实例验证临时变量的开辟
主函数内通过调用MySwap函数实现变量a、b值的交换,通过运行发现:临时变量x、y与对应的a、b的地址并不相同,且运行结束后a、b的值并没有完成交换。
代码:
printf("main: &a %p, &b %p\\n",&a,&b);//调用MySwap前a,b的地址
printf("MySwap:&x %p, &y %p\\n", &x, &y);//调用MySwap时临时变量x,y的地址
输出结果:
实际参数 a 的地址为 007AF8B0,形式参数 x 的地址为 007AF7CC,通过比较,两者的地址并不相同,证明调用函数MySwap时开辟了新的空间形成了临时变量。
2、证明临时变量有生命周期和作用范围
已知临时变量具有生命周期和作用范围.
如图1.1输出结果得知调用MySwap后a,b的值并未交换,而调用MySwap,函数中局部变量x,y的值得到了交换,证明作用范围,即临时变量不能影响作用范围以外的任何变量。
由图1.2得知在调用MySwap以后再输出x的值显示x未定义,证明临时变量具有生命周期。因为在函数调用结束以后临时变量销毁,释放空间,所以显示未定义x。
代码:
printf("before: %d, %d\\n",a,b);//调用MySwap前a,b的值
printf("MySwap# %d, %d\\n",x,y);//调用MySwap,函数中局部变量交换前x,y的值
printf("MySwap# %d, %d\\n",x,y);//调用MySwap,函数中局部变量x,y的值
printf("after: %d, %d\\n", a, b);//调用MySwap后a,b的值
输出结果:
1.1
1.2
源码
#include<stdio.h>
#include<windows.h>
void MySwap(int x, int y){//传值传参 交换函数
printf("MySwap:&x %p, &y %p\\n", &x, &y);//调用MySwap时x,y的地址
x ^= y;
y ^= x;
x ^= y;
}
int main(){
int a = 10;
int b = 30;
printf("before:%d, %d\\n",a,b);
printf("main: &a %p, &b %p\\n",&a,&b);//调用MySwap前a,b的地址
MySwap(a,b);
printf("after: %d, %d\\n", a, b);
system("pause");
return 0;
}
三、总结
函数传参时发生形参实例化,要发生临时拷贝,即形成临时变量(或称为局部变量),局部变量具有作用范围和生命周期。
以上是关于临时变量的解说和验证的主要内容,如果未能解决你的问题,请参考以下文章
我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?