提示: 作者被禁止或删除 内容自动屏蔽
详细一点就是:
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=‘,’
。。。。。
所以每次打出的都是‘ ’空格
够详细了吧,呵呵,,,,,