| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:关于static的问题,求指导
只看楼主 加入收藏
大学生c语言
Rank: 2
等 级:论坛游民
帖 子:47
专家分:10
注 册:2012-6-19
结帖率:54.55%
收藏
已结贴  问题点数:5 回复次数:9 
关于static的问题,求指导
#include "stdio.h"
static int j;
int k;
void fun1(void)
{
    static int i=0;
    i++;
    printf("%d\n",i);
}
void fun2(void)
{
    j=0;
    j++;
    printf("%d\n",j);
}
int main()
{
  for(k=0;k<10;k++)
  {
    fun1();
    fun2();
  }
  return 0;
}
这个函数输出的值是1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1
printf是我自己加的  想看看i和j的值,可是j的值始终是一,能不能有人从静态存储和内存的角度去分析static
搜索更多相关主题的帖子: void static include 
2013-04-20 09:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
什么叫从静态存储和内存的角度?

授人以渔,不授人以鱼。
2013-04-20 10:13
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
一个是静态全局变量,一个是静态局部变量,静态全局变量特点
静态全局变量有以下特点:
该变量在全局数据区分配内存;
未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);
静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。

Maybe
2013-04-20 11:13
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:0 
邓前辈讲解的很详细啊
2013-04-20 11:27
zhengtiande
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-18
收藏
得分:0 
3楼讲的好
2013-04-20 14:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
他每次都给j赋初值,然后马上加1输出,跟全局、局部、静态有鸟关系。

[ 本帖最后由 TonyDeng 于 2013-4-20 14:17 编辑 ]

授人以渔,不授人以鱼。
2013-04-20 14:16
大学生c语言
Rank: 2
等 级:论坛游民
帖 子:47
专家分:10
注 册:2012-6-19
收藏
得分:0 
我上来看啦,睡了一觉,多了这么多答案

你教我入门,我让代码飞起来---------我的思维在代码里游荡
2013-04-20 15:28
大学生c语言
Rank: 2
等 级:论坛游民
帖 子:47
专家分:10
注 册:2012-6-19
收藏
得分:0 
回复 3楼 邓士林
说的好啊

你教我入门,我让代码飞起来---------我的思维在代码里游荡
2013-04-20 15:31
扬州笑哈哈
Rank: 2
等 级:论坛游民
帖 子:26
专家分:34
注 册:2013-3-1
收藏
得分:0 
回复 6楼 TonyDeng
ding

很多事不是看你做没做,而是看你能做多久
2013-04-20 19:37
不眠的夜
Rank: 2
等 级:论坛游民
帖 子:63
专家分:96
注 册:2013-3-12
收藏
得分:0 
#include "stdio.h"
static int j;// 声明并使用默认初始化值,在此期间访问会得到静态变量的系统默认值(int型为0)所以每次j初始值为0
int k;
void fun1(void)
{
    static int i=0;// 声明并初始化(此时为初始化赋值,如果这条语句出现在函数中,即便被多次调用,也只会执行一次。)
    i++;
    printf("%d\n",i);
}
2013-04-20 22:34
快速回复:关于static的问题,求指导
数据加载中...
 
   



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

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