void reverse(char s,char *t) //功能未实现,仅作说明
{
static int i=0;
if(*s++)
reverse(s,t+i);
if(--s!='\0')
t[i++]=*s;
}
所有被调用的函数都将创建一个副本。此处的i应该不会自增才对啊?
是否是编译器的某种优化?求原因啊。拜谢。
1
comicfans44 2015-05-07 16:08:43 +08:00 1
函数中的静态变量是全局唯一的(static int i=0 仅被执行一次),所有被调用的函数的局部变量(非static)都将创建一个副本,但其中的静态变量是共享的
|
2
loveuqian 2015-05-07 16:11:51 +08:00
花括号里就看懂了第一行
我只知道static定义的变量只赋值1次 路过。。。 |
3
julykitt 2015-05-07 16:57:51 +08:00
@loveuqian 是只初始化一次,只赋值一次的是const,严格来说const是声明变量只读,但是其实也是可以修改的。
@comicfans44是对的,static是变量的生命周期是`全局`的,参考C++类的static成员变量 |