这是全球性的吗?

Noi*_*art -1 c ctypes

我正在尝试理解这个函数并将其转换为ctypes:

15 XDisplay* GetXDisplay() {
16   static XDisplay* display = NULL;
17   if (!display)
18     display = OpenNewXDisplay();
19   return display;
20 }
Run Code Online (Sandbox Code Playgroud)

我们在这里看到if(!display)然后做了display = OpenNewXDisplay();但是令我困惑的是那个人在它上面的行上定义的displayNULL(static XDisplay* display = NULL;)所以为什么在地球上需要if,如果他只是将它设置为null?以某种方式显示一个全局变量?

gna*_*729 5

display是一个静态变量.

对于静态变量,初始化仅发生一次,而不是每次输入函数.这只是基本的C(也是基本的C++,或基本的Objective-C).

所以这段代码只是创建单例对象的一种原始方式.