博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

行云流水(我来如流水、去如风)

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空:青山依旧在,几度夕阳红。 白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢:古今多少事,都付笑谈中
  tomdu.cublog.cn

关于作者
姓名:杜涛
职业:计算机软件
位置:济南
介绍:面向客户的WEB2解决方案和移动平台解决方案提供者
|| << >> ||
我的分类


auto和static的区别
看下边三个程序及其输出结果:auto变量省略关键字
程序一:
#include <iostream.h>
void sum();
main()
{
 int i=0;
 sum();
 cout<<"in main i="<<i<<"\n";
 sum();
 cout<<"in main i="<<i<<"\n";
}
void sum()
{
 int i=0;
 i=i+1;
 cout<<"in sum i="<<i<<"\n";
}
程序二:
#include <iostream.h>
void sum();
main()
{
 int i;
 sum();
 cout<<"in main i="<<i<<"\n";
 sum();
 cout<<"in main i="<<i<<"\n";
}
void sum()
{
 int i;
 i=i+1;
 cout<<"in sum i="<<i<<"\n";
}
程序三:
#include <iostream.h>
void sum();
main()
{
 static int i;
 sum();
 cout<<"in main i="<<i<<"\n";
 sum();
 cout<<"in main i="<<i<<"\n";
}
void sum()
{
 int i=0;
 i=i+1;
 cout<<"in sum i="<<i<<"\n";
}
 
输出结果:
程序一:
in sum i=1
in main i=0
in sum i=1
in main i=0
第二次sum中的i值为1,因为auto变量不保存历史值。
程序二:
in sum i=10985674
in main i=11764532
in sum i=12387659
in main i=11764532
输出无关值,因为auto变量不做初始化。
程序三:
in sum i=1
in main i=0
in sum i=2
in main i=0
第二次sum值i为2,因为static变量保留历史值。
 
由此可知其区别为:
1、静态变量在没有明确的初始值时会自动初始化为0或者空(NULL)
2、静态变量在离开作用域后他的值会保持不变。

发表于: 2007-12-26,修改于: 2007-12-26 14:47,已浏览364次,有评论1条 推荐 投诉


网友评论
网友: 本站网友 时间:2008-03-12 21:45:42 IP地址:61.50.133.★
程序三应为:
in sum i=1
in main i=0
in sum i=1
in main i=0

 发表评论