| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:盼高手解释一下!
只看楼主 加入收藏
lele2010
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:121
注 册:2010-1-23
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:2 
盼高手解释一下!
#include<stdio.h>
fun (int p)
{
    int k=1;
    static t=2;
    k=k+1;t=t+1;
    return (p*k*t);
}
main()
{
    int x=4;
    fun(x);
    printf("%d",fun(x));
}

答案是32!请各位解释一下!
搜索更多相关主题的帖子: 解释 
2010-02-03 10:10
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:5 
注意static,表示静态存储。它将函数中t定义为静态存储变量,这种变量是程序编译时分配的一个固定的存储单元,它只在程序结束的时候被释放(在运行过程中,不会被释放)。

#include<stdio.h>
fun (int p)
{
    int k=1;
    static t=2;
    k=k+1;t=t+1;
    return (p*k*t);
}
main()
{
    int x=4;
    fun(x);     //第一次调用函数时,t值被改变,为3;值没有被释放
    printf("%d",fun(x));  //第二次调用,t由3变为4,所以结果为32
}

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2010-02-03 10:27
fionawings
Rank: 1
等 级:新手上路
帖 子:4
专家分:6
注 册:2010-2-3
收藏
得分:0 
static t=2; //只会被定义一次

main()
{
    int x=4;
    fun(x);     //第一次调用函数时,t值被改变,为3
    printf("%d",fun(x));  //第二次调用,“static t=2;”不再定义,直接执行t=t+1
}
2010-02-03 12:57
快速回复:盼高手解释一下!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034475 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved