问题及代码
/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:辛彬
* 完成日期:2014年 12 月 3 日
* 版 本 号:v1.0
*
* 问题描述: 阅读下面的程序,先写出其运行结果,再运行对比。
* 输入描述:没有输入。
* 程序输出:指针间接输出数据;
*/
#include <iostream>
using namespace std;
int sub(int*);
int main()
{
int i, k;
for (i=0; i<4; i++)
{
k=sub(&i);
cout<<"sum="<<k<<'\n';
}
cout<<"\n";
return 0;
}
int sub(int *s)
{
static int t=0;
t=*s + t;
return t;
}
我的猜测:
sum=0
sum=1
sum=2
sum=3
运行结果:
学习感悟:当时就呵呵了,光想着指针去了,结果没注意到static,它的功能是保存上一次输出的值,也就是说虽然第一次的赋值为0,但当输出1后,它的值就变成了1,之后 就一直累加。瞬间感觉被坑了。。。。