#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”。我不明白为什么它不只在第二次调用name()时打印“ Justin。n”。
答案 0 :(得分:0)
您将变量n
静态声明在name()
内,该变量指向C字符串" Justin "
,然后使其指向C字符串" Alex "
。
因此,自然地,当您稍后对其进行检查时,它仍然指向C字符串" Alex "
。
请记住,您是静态声明 。这意味着name()
的每次调用都共享相同的变量。
如果每次进入函数时,函数静态变量要重新获取其初始化程序的值,则绝对没有必要将它们设为静态!