| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3689 人关注过本帖
标题:请教static初始化与赋值的区别
只看楼主 加入收藏
风兮飞扬
该用户已被删除
收藏
得分:1 
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-27 15:11
吴军林
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2011-4-19
收藏
得分:1 
详细一点就是:
static char c ;和static char c =‘ ’;这两个都是定义c为局部静态变量,这两个语句都是在你编译的时候就赋初值
,而且只赋一次初值,以后c的值就是保持上一次函数调用结束时的值,而不是再一次重新赋值。
void g(char *string)
{
    static char c=' ';
    printf("%c %s ",c,string);
    c=',';
}
这段函数的执行过程是;
第一次,c=‘ ’;(这是在编译的时候就完成的,只执行一次)      输出c      c=‘,’;
第二次,c=‘,’;(因为上一次结束时就是‘,’)        输出c        c=‘,’;
第三次,c=‘,’;            输出c           c=‘,’;
。。。。。
所以打出的都是‘,’号
对于第二段  
void g(char *string)
{
    static char c;
    c=' ';
    printf("%c %s ",c,string);
    c=',';
}
第一次,c=一个随机的字符(在编译的时候就赋值的),c=‘ ’   输出c      c=‘,’
第二次,c=‘,’(保留上次结束时的结果) c=‘ ’   输出c        c=‘,’
。。。。。
所以每次打出的都是‘ ’空格
够详细了吧,呵呵,,,,,
2011-04-27 16:35
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
C PRIMER PLUS那本书存储类那章讲的很详细。仔细看看就会了。

没必要什么都去看反汇编,真想知道的话,把call @ILT+0(_g) (00401005)
那部分也贴出来,看看cacker有没有耐心解释给你 。。。 都是体力活



小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2011-04-27 18:16
mi53
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-10-3
收藏
得分:0 
以下是引用吴军林在2011-4-27 16:35:06的发言:

详细一点就是:
static char c ;和static char c =‘ ’;这两个都是定义c为局部静态变量,这两个语句都是在你编译的时候就赋初值
,而且只赋一次初值,以后c的值就是保持上一次函数调用结束时的值,而不是再一次重新赋值。
void g(char *string)
{
    static char c=' ';
    printf("%c %s ",c,string);
    c=',';
}
这段函数的执行过程是;
第一次,c=‘ ’;(这是在编译的时候就完成的,只执行一次)      输出c      c=‘,’;

解释的挺仔细。但感觉你这一句好像是笔误吧,第一个程序是先打一个空格,后面才是逗号
2011-04-27 23:21
mi53
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-10-3
收藏
得分:0 
回复 13楼 你们都要疼我哦
我觉得啊我就不该把反汇编问题贴出来去问人。论坛就是大家把问题提出来,然后大家给点思路,最后还是靠自己去研究。觉得该结贴了。
谢谢所有热心回答的网友。
2011-04-27 23:26
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-28 00:09
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-28 00:11
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
?

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2011-04-28 01:18
mi53
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-10-3
收藏
得分:0 
回复 17楼 cacker
谢谢了,下次遇到const的问题再来请教。
2011-04-28 14:28
快速回复:请教static初始化与赋值的区别
数据加载中...
 
   



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

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