#include <stdio.h>
#include <iostream>
using namespace std;
const char *& name () {
static const char * n = " Justin " ;
cout << n << " .\ n " ;
return n ;
}
int main()
{
name () = " Alex "; //prints Justin . n
name(); //prints Alex . n
}
因此,对name()的第一次调用似乎将返回的引用变量n分配给Alex,但是对name()的第二次调用不会打印出在name()中指定的“Justin.n” . 我不明白为什么它不只是打印“Justin.n”第二次调用name() .
1 回答
你拿了变量
n
,在name()
内静态声明,它指向一个C字符串" Justin "
,然后使它指向一个C字符串" Alex "
.所以,当然,当你稍后检查它时,它仍然指向一个C字符串
" Alex "
.记住,你是静态地宣布它 . 这意味着
name()
的每次调用都会共享同一个变量 .如果函数静态变量在每次进入函数时重新获取其初始化值,那么将它们设置为静态绝对没有意义!