检查自变量的生命周期和作用域

来源:互联网 发布:c语言if并列多个条件 编辑:程序博客网 时间:2021/01/17 11:39

检查自变量的生命周期和作用域

#include<stdio.h>int total(int n);int reverse(int n);int main(){int x=123;printf("main:  &x=%x,x=%d\n",&x,x);    //输出x的地址和值total(x+1);printf("main:  &x=%x,x=%d\n",&x,x);    //输出x的地址和值 reverse(x+2);printf("main:  &x=%x,x=%d\n",&x,x);    //输出x的地址和值return 0; }  int total(int n) { int t=0; printf("total:  &n=%x,&t=%x,n=%d\n",&n,&t,n);   //输出n和t的地址,及n的值  return t; } int reverse(int n) { int m=0; printf("reverse:  &n=%x,&m=%x,n=%d\n",&n,&m,n);   //输出n和m的地址,及n的值  return m; }

输出结果分析:主函数main在调用函数total之前,起自变量x在其生命周期和作用域内。在调用函数total时,主函数main的自变量x作为实参给total的形参n初始化之后,离开作用域,函数total的自变量n和t进入其生命周期和作用域。从函数total返回主函数时,函数total的自变量n和
t结束了生命周期也就离开了作用域。主函数的自变量x回到作用域,在调用函数reverse的,main的自变量x作为实参给reverse的形参n初始化之后,离开作用域,函数reverse的自变量n和m进入生命周期和作用域,而且他们的空间恰是函数total的自变量n和t的空间,这是因为后者的空间
被撤销后,分配给了前者。从函数total返回主函数时,主函数的自变量x回到作用域,因为它的生命周期还没结束,所以他的地址和调用total之前的地址一样。



0 0
原创粉丝点击